设计模式
大约 2 分钟
设计模式指的是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验总结
创建型模式
关注对象创建过程的模式
单例模式
目的:使得类的一个对象成为该类系统中的唯一实例
定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供
要点
- 某个类只能有一个实例
- 必须自行创建实例
- 必须自行向整个系统提供这个实例
实现
- 只提供私有的构造方法
- 含有一个该类的静态私有对象
- 提供一个静态的公有方法用于创建和获取静态私有对象
优点
- 在内存中只有一个对象,节省内存空间
- 避免频繁的创建销毁对象,提高性能
缺点
- 扩展比较困难
- 实例化后对象长期不用,系统将默认为垃圾进行回收,造成状态丢失
使用场景
- 创建对象时占用资源过多,但同时又需要用到该类对象
- 对系统内资源要求统一读写,如读写配置信息
- 当多个实例存在可能引起程序逻辑错误,如号码生成器
饿汉式
在对象创建过程中立即完成实例化,空间换时间,线程安全
public class SingletonOne {
private SingletonOne() {}
private static SingletonOne instance = new SingletonOne();
public static SingletonOne getInstance() {
return instance;
}
}
懒汉式
在对象创建过程中不实例化,在静态共有方法中再实例化,时间换空间,存在线程风险
public class SingletonOne {
private SingletonOne() {}
private static SingletonOne instance = null;
public static SingletonOne getInstance() {
if (instance == null)
instance = new SingletonOne();
return instance;
}
}
工厂方法模式
建造者模式
抽象工厂模式
原型模式
组合型模式
关注类和对象组合的模式
桥接模式
装饰器模式
代理模式
组合模式
享元模式
外观模式
适配器模式
行为型模式
关注对象之间的通信过程
备忘录模式
状态模式
解释器模式
命令模式
模板方法模式
访问者模式
中介者模式
迭代子模式
观察者模式
策略模式
责任链模式