单例设计模式概述:
单例模式就是要确保类在内存中只有一个对象,该实例必须自动创建,并且对外提供。
优点 :
在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。
缺点 :
没有抽象层,因此扩展很难。 职责过重,在一定程序上违背了单一职责。
TestSinglePattern.java
package cn.itcast.test;
import cn.itcast.pattern.SinglePattern;
/*
* 单例模式:
* 饿汉式:类一加载就创建对象
* 懒汉式:用的时候,才去创建对象
*
* 面试题:单例模式的思想是什么?请写一个代码体现。
*
* 开发:饿汉式(是不会出问题的单例模式)
* 面试:懒汉式(可能会出问题的单例模式)
* A:懒加载(延迟加载)
* B:线程安全问题
* a:是否多线程环境 是
* b:是否有共享数据 是
* c:是否有多条语句操作共享数据 是
*/
public class TestSinglePattern {
public static void main(String[] args) {
SinglePattern sp1 = SinglePattern.getSinglePattern();
SinglePattern sp2 = SinglePattern.getSinglePattern();
System.out.println(sp1 == sp2);
}
}
SinglePattern.java
package cn.itcast.pattern;
public class SinglePattern {
// 饿汉式
// private static SinglePattern ss = new SinglePattern();
//
// private SinglePattern(){
// }
//
// public static SinglePattern getSinglePattern(){
// return ss;
// }
// 懒汉式
private static SinglePattern ss = null;
private SinglePattern(){
}
public synchronized static SinglePattern getSinglePattern(){
if(ss==null){
ss = new SinglePattern();
}
return ss;
}
}