单例设计模式
单例模式
简介:
是Java中最简单的一种设计模式,这种设计模式属于创建型设计模式,提供了一种最佳的创建对象的方式.这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建(也就是不能new这个类的对象(需要私有化构造器))
注意:
- 这个类只有一个实例
- 单例必须自己创建自己的实例
- 单例必须给其他对象提供这一个实例
应用:
- 一个班级只能有一个班主任
- windows是多进程线程的,在操作一个文件的时候,就不可以避免的出现了多个进程同时操作一个文件的现象,所有该文件的处理必须通过唯一的一个实例来进行
- 一些设备管理器设计为单例模式,EG:一台电脑连接了两个打印机,在输出的时候不能让两个打印机处理同一个文件
好处:
- 在内存中只有一个实例存在,减少了资源的占用,同时减少了内存的开销,尤其是频繁的创建对象和销毁对象
- 避免了对资源的多重占用
实现:
- 创建一个SingleObject类,SingleObject类私有化了它的构造函数和本身的一个静态实例
- SingleObject类提供了一个静态的方法,供外界获取它的静态实例
步骤一: SingleObject.java
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 Singleton");
}
}
步骤二:SingletonPatternDemo.java
public class SingletonPatternDemo {
public static void main(String[] args) {
//不合法的构造函数
//编译时错误:构造函数 SingleObject() 是不可见的
//SingleObject object = new SingleObject();
//获取唯一可用的对象
SingleObject object = SingleObject.getInstance();
//显示消息
object.showMessage();
}
}
输出为:Hello Singleton
======未完成=