一、概念
一个类在程序中仅有单个对象存在,不会存在多个这个类的对象。保证一个类仅有一个实例,并提供一个访问它的全局访问点。
主要解决一个全局使用的类频繁地创建与销毁。需要自己创建自己的实例并提供给其他类使用,构造函数写为私有。
二、例子
单例模式中保存了唯一的自己这个类的静态实例,并将构造函数设为私有,对外提供了静态的getInstance函数。
public class SingleObject {
//创建 SingleObject 的一个对象
private static SingleObject instance = new SingleObject();
//让构造函数为 private,这样该类就不会被实例化
private SingleObject(){}
//获取唯一可用的对象
public static SingleObject getInstance(){
return instance;
}
public void showMessage(){
System.out.println("Hello World!");
}
}
//测试部分
public class SingletonPatternDemo {
public static void main(String[] args) {
//不合法的构造函数
//编译时错误:构造函数 SingleObject() 是不可见的
//SingleObject object = new SingleObject();
//获取唯一可用的对象
SingleObject object = SingleObject.getInstance();
//显示消息
object.showMessage();
}
}
三、总结
单例模式有几种实现方式,在下一节再瞅。之前对单例模式的理解是重写new和delete,new时返回唯一的静态实例,delete时也不删除唯一的静态实例。但看来不是这样的,接下来开始对《head first》设计模式这本书进行研究。