单例设计模式
能更好的更快的更高效的来解决现实生活中的某一个问题
选择单例模式就是为了避免不一致状态,避免政出多头
单例模式特点:
- 单例类只能有一个实例
- 单例类必须自己创建自己的唯一实例
- 单例类必须给所有其他对象提供这一实例
单例模式保证了全局对象的唯一性,比如系统启动读取配置文件就需要单例保证配置的一致性。
实现单例模式的方式
- 饿汉式单例(立即加载方式)
// 饿汉式单例
public class Singleton1 {
// 私有构造
private Singleton1() {}
private static Singleton1 single = new Singleton1();
// 静态工厂方法
public static Singleton1 getInstance() {
return single;
}
}
饿汉式单例在类加载初始化时就创建好一个静态的对象供外部使用,除非系统重启,这个对象不会改变,所以本身就是线程安全的。
Singleton通过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实例只能通过getInstance()方法访问。
- 懒汉式单例(延迟加载方式)
public class Singleton4 {
// 私有构造
private Singleton4() {}
private static Singleton4 single = null;
// 双重检查
public static Singleton4 getInstance() {
if (single == null) {
synchronized (Singleton4.class) {
if (single == null) {
single = new Singleton4();
}
}
}
return single;
}
}
PS.
每天开始慢慢学习一个个的知识点了,但是面对具体的卡牌游戏的demo还是有些力不从心。上课时刚开始的时候还能跟上脚步,但随着类和对象的不停引用有些混乱了,没办法精准的认知到它们所代表的含义,说到底还是基本功不太扎实。扑克游戏的这个demo相对比较重要,需要认真研习!
网友评论