标签:class static成员 stat bsp new 创建对象 私有 匹配 设计模式之单例模式
单例模式是一种生产对象型的设计模式。
单例模式指的是某个类的对象在同一时间只允许存在1个实例(对象)。
假设存在类King:
public class King {
}
普通的类可以随意的创建对象:
King k1 = new King();
King k2 = new King();
King k3 = new King();
因为当创建一个类,并且没有显式的指定构造方法时,等效于:
public class King {
public King() {
}
}
要实现单例模式,首先,就必须不允许随意创建对象!则:
public class King {
private King() {
}
}
一旦将构造方法私有化,则在类的外部是不允许调用构造方法的!此时,只有类的内部才可以调用构造方法创建对象:
public class King {
private King king = new King();
private King() {
}
}
在以上代码中,创建的king对象就是唯一被创建出来的对象!那么,当类的外部需要时,提供匹配的get方法即可!
public class King {
private King k = new King();
private King() {
}
public King getInstance() {
return k;
}
}
虽然以上代码看似可行,但是,实际使用时,getInstance()方法是无法被调用的!为了保证在没有King类的对象之前就可以调用getInstance()方法,必须使用static进行修饰:
public class King {
private King k = new King();
private King() {
}
public static King getInstance() {
return k;
}
}
由于被static修饰的成员,只能访问其它static成员(不可以访问其它非static成员),因为一旦使用static后,该成员将会最优先加载到内存中!而其它没有被static修饰的数据此时还没有加载到内存中,所以不可以访问!最终,还需要使用static修饰King的对象:
public class King { private static King k = new King(); private King() { } public static King getInstance() { return k; } }
标签:class static成员 stat bsp new 创建对象 私有 匹配 设计模式之单例模式
原文地址:https://www.cnblogs.com/mylzhy/p/9175234.html