Java和C++实现单例设计模式

  • Post author:
  • Post category:java




一、单例设计模式概述

单例模式,也叫单子模式,是一种常用的软件设计模式,属于创建型模式的一种。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。—-引述维基百科。

简单来说,单例设计模式的作用,就是希望设计一个类,这个类从始到终只允许被创建一个对象。



二、单例设计模式实现的过程

  1. 要求一个类只能被创建一个类对象,则在设计这个类的时候,需要把这个类的构造函数的控制起来,不让这个类的使用者通过构造函数来构造这个类对象,所以把这个的类的构造函数设置为private访问权限。
  2. 既然已经设计将类的构造函数设置为private,不让这个类的用户使用构造函数来创建类对象,则需要为这个类的用户提供一个返回这个类对象的方法。
  3. 返回类对象的方法,需要的满足多次调用这个方法的时候,从始到终返回的都是同一个类对象。
  4. 更进一步,就是要考虑类对象的析构(资源有没有被释放)、线程同步等问题了。



三、使用Java实现单例设计模式

  1. 饿汉式的单例设计模式

    所谓的饿汉式,就是先把类对象创建出来,赋给一个类的私有成员变量。用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 版权协议,转载请附上原文出处链接和本声明。