核心模块:
所有代码请访问:git@code.aliyun.com:289804201/PatternLearn.git
使用场景:只需要一个实例对象,需要频繁创造销毁的对象,创建时耗时过长的对象,数据库或者文件对象;
优点:节约系统资源;
缺点:没有抽象层扩展有困难,类职责过重违背单一职责原则;
注意:
1,建造者模式是将一个复杂对象的创建过程给封装起来,而不需要关心具体创建过程;
/**
* Created by tory on 2018/1/11.
* 单例模式
*/
public class SingletonPattern {
public static void main(String[] args) {
PushManager.getInstance().print();
}
}
//单例模式饿汉
//class PushManager {
// private static PushManager instance = new PushManager();
//
// private PushManager() {
// }
//
// public static PushManager getInstance() {
// return instance;
// }
//public void print(){
// System.out.println("print()");
//}
//}
//单例模式线程安全,并发
//class PushManager {
// private volatile static PushManager instance;
//
// private PushManager() {
// }
//
// public static PushManager getInstance() {
// if (null == instance) {
// synchronized (PushManager.class) {
// if (null == instance) {
// instance = new PushManager();
// }
// }
// }
// return instance;
// }
//public void print(){
// System.out.println("print()");
//}
//}
//单例模式,方式三,在内部静态类中加载
class PushManager {
static class InstanceHolder {
//静态内部类的加载顺序和内部类一样,使用到的时候才加载
static PushManager INSTANCE = new PushManager();
}
private PushManager() {
}
public static PushManager getInstance() {
return InstanceHolder.INSTANCE;
}
public void print() {
System.out.println("print()");
}
}
内容打印
Hello World!
print()