单态模式的回顾

本文介绍了单态模式的设计原理,展示了如何通过将构造器私有化并利用静态方法确保类的唯一实例。通过示例代码说明了单态模式的实现方式及其在减少Java对象创建和销毁开销方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单态模式的回顾

   单态模式现在了类实例的创建。采用这种模式设计的类,可以保证仅有一个实例,并提供访问该实例的全局访问点。J2EE应用的大量组件,都需要保证一个类只有一个实例。比如,数据库引擎访问点只能有一个。更多的时候,为了提高性能,程序应该尽量减少Java对象的创建和销毁时的开销。使用单态模式可避免Java类的频繁实例化,让相同类的全部实例共享同一内存区。

   为了防止单态模式的类被多次实例化,应将类的构造器设成私有的。这样,保证只能通过静态方法获得类实例。而该静态方法则保证每次返回的实例都是同一个,这就需要将该类的实例设置成类属性,该属性需要被静态方法访问,因此该属性应设成静态属性。下面给出单态模式的示例代码:

  //单态模式测试类

Public class SingletonTest

{

   //该类的一个普通属性

 Int value;

  //使用静态属性类保存该类的一个实例

 Private static SingletonTest instance;

 //构造器私有化,避免该类被多次实例化

 Private SingletonTest()

{

  System.out.println(“正在执行构造器…”);

}

 //提供静态方法来返回该类的实例

 {

  //实例化类实例前,先检查该类的实例是否存在

  If(instance==null)

{

   //如果不存在,则新建一个实例

  Instance=new SingletonTest();

}

 //返回该类的成员变量:该类的实例

  Return instance;

}

 //以下提供对普通属性valuesettergetter方法

Public int getValue()

{

 Return value;

}

 Public void setValue(int values)

{

 This.value=value;

}

 Public static void main(String[] args)

{

  SingletonTest t1=SingletonTest.getInstance();

  SingletonTest t2=SingletonTest.getInstance();

  T2.setValue(9);

  System.out.println(t1==t2);

}

}

  根据程序最后打印的结果,可以看出类的两个实例完全相同。这证明:单态模式的类的全部实例是同一共享实例。程序里虽然获得了类的两个实例,但实际上只执行一次构造器,因为对于单态模式的类,不管有多少此的创建实例请求,都只执行一次构造器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值