一、单例设计模式概述
单例模式,也叫单子模式,是一种常用的软件设计模式,属于创建型模式的一种。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。—-引述维基百科。
简单来说,单例设计模式的作用,就是希望设计一个类,这个类从始到终只允许被创建一个对象。
二、单例设计模式实现的过程
- 要求一个类只能被创建一个类对象,则在设计这个类的时候,需要把这个类的构造函数的控制起来,不让这个类的使用者通过构造函数来构造这个类对象,所以把这个的类的构造函数设置为private访问权限。
- 既然已经设计将类的构造函数设置为private,不让这个类的用户使用构造函数来创建类对象,则需要为这个类的用户提供一个返回这个类对象的方法。
- 返回类对象的方法,需要的满足多次调用这个方法的时候,从始到终返回的都是同一个类对象。
- 更进一步,就是要考虑类对象的析构(资源有没有被释放)、线程同步等问题了。
三、使用Java实现单例设计模式
-
饿汉式的单例设计模式
所谓的饿汉式,就是先把类对象创建出来,赋给一个类的私有成员变量。用java实现饿汉式的单例设计模式的代码如下:
class Singleton
{
private Singleton() {
} //1.类构造函数私有
int flag = 0;
private static Singleton obj = new Singleton(); //私有成员变量,创建类对象
void setFlag(int n) {
flag = n;
}
int getFlag() {
return flag;
}
static Singleton getInstance() {
//2.返回类对象的一个方法,由于static限定,可以通过类名调用这个函数
System.out.println("this is a singleton demo.");
return obj;
}
public static void main(String []args)
{
Singleton single = Singleton.getInstance();
single.setFlag(100);
Singleton single2 = Singleton.getInstance();
System.out.println("--------------\n" + single2.getFlag());
}
}
运行这个程序,得到的结果为:
打印single2对象的Flag的值&#x
版权声明:本文为akkk1kkka原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。