java设计模式—单例模式
java单例模式指的是,在执行程序的过程中,只允许该类生成一个实例对象。
通过单例模式可以保证系统中的一个类只有一个实例,而且这个类易于被外界访问,从而方便对实例个数的控制并节约系统资源。
单例模式定义
单例模式确保在某一个类只有一个实例,而且自行的实例化并向系统提供这个实例,这个类称为单例类,它提供全局的访问的方法。
单例模式的要点
1.某一类只能有一个实例
2.该单例类必须自行创建这个实例
3.该但李磊必须向整个系统提供这个实例。
单例模式的应用环境
单例模式一般应用在窗口管理器或者文件系统
package Singleton;
import java.io.Serializable;
public class Elvis implements Serializable {
public static final Elvis INSTANCE = new Elvis();
private Elvis() {}
//Singleton的这个实现是:静态方法Elvis.getInstance的这个方法的所有调用都会返回同一个对象的引用
//所以永远都不会创建第二个Elvis的实例
public static Elvis getInstance() {
return INSTANCE;
}
//Obeject readRseolve方法
private Object readResolve()
{
return INSTANCE;
}
//为了使工厂方法实现单例模式(singetlon类)时是可序列化的,仅在声明中加上“implements Serializable”是不够的,为了
//保证singetlon,必须声明所有的实例域都是瞬时的,并加上一个Object readResolve方法,否则每次反序列化一个序列化的
//实例时都会创建一个新的实例,比如说在我们的例子中就会创建一个“假冒的Elvis”。
//这样才是真正的单例。
public void leavTheBuolder()
{
}
}
这里提供了测试类来测试单例是否实现
//用私有构造器强化singetlon属性(私有构造器强化单例属性)——单例设计模式
//singetlon是指只能被实例化一次的类,singetlon 通常用来表示那些本质上唯一的系统组件,如窗口管理器或者文件系统。
//可以用java设计模式中的单例模式来对singetlon类进行快速的实现。
package Singleton;
public class Test {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Elvis elvis = Elvis.getInstance();
Elvis elvis2 = Elvis.getInstance();
System.out.println("elvis和elvis2是否相等?\n相等输出true,不相等输出false\n"+(elvis==elvis2));
}
}
测试结果
欢迎各位的批评和指导