在软件设计中,有时确实存在一个类仅能用来产生一个唯一对象的必要性。例如在Windows系统中,
应该只有一个文件系统与一个文件视图管理系统(Window Manager)。
有两种方法可以确保一个类只有一个实例。
1、程序员在应用程序中使用代码保证仅有一个实例被创建。
2、不依靠应用程序员,精心设计仅有一个实例的类,由该类本身的结构确保其仅能够被创建一个实例。
这就是单例模式
单例模式指的是确保一个类仅有一个唯一的实例,并且提供一个全局的访问点。
单例模式是将一个需要生成唯一对象的类设计成单例类,从而使得调用者仅仅能获得唯一的实例。
实现单例模式关键在三点:
1、设置构造方法私有,避免客户程序利用该构造方法创建不同的对象。
2、提供一个静态变量存放类的唯一实例。
3、提供一个获得实例的方法,静态方法。
注意:
如果涉及到多线程,可以使用Java语言中的同步(Synchronized)机制,将方法getInstance()置于同步机制的保护下。
单例模式实现案例(单线程):
public class President{ private static President instance; private String name; private President(String name){ this.name = name; } public static President getInstatnce(String name){ if(instance==null&&!name.equals(null)){ instance = new President("张三"); } return instance; } }
单例模式详细分析参考: