java设计模式之单例模式

来源:互联网 发布:淘宝代购衣服专柜真假 编辑:程序博客网 时间:2024/05/19 15:22

某些情况下,有些对象只需要一个就可以了,即每个类只需要一个实例,比如一台计算机可以连接多台打印机,但是这台计算机的打印程序只能有一个,这里就可以通过单利模式来避免俩个打印作业同时输出到打印机中,即在整个打印的过程只有一个打印程序的实例。

单例模式也叫单件模式,它的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个或者不存在。

单例模式确保某一个类只有一个实例,而且自行实例化,并向整个系统提供这个实例单例模式。单例模式只应在有真正的“单一实例”需求时才可以使用。

全局变量与单例模式的区别:

首先,全局变量是对一个对象的静态引用,全局变量确实可以提供单例模式实现全局访问这个功能,但是它并不能保证应用程序中只有一个实例。

其次,编码规范也明确指出应该少用全局变量,因为过多使用全局变量,会造成代码难读。

最后,全局变量并不能实现继承,而单例模式(可实现继承)在类中保留了它的唯一实例,同时还提供了唯一一个访问该实例的全局访问点。


单例模式用来保证系统中一个类只有一个实例,单例类的构造函数必须为私有,同时单例类必须提供一个全局访问点。

public class Test{private Test(){}private static Test uniqueInstance = new Test();public static Test getInstance(){return uniqueInstance;}}

使用这种方法实现的单例模式在类被加载时就会实例化这个类的一个对象,由于在使用之前对象已经创建好,因此可以在多线程环境下使用这种方法

如果采用按需实例化(在实例化对象的使用的时候才实例化),则需要考虑多线程的同步。


原创粉丝点击