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