Java中常用的设计模式解析_它定义了对象之间的一对多依赖关系_合成复用原则- 尽量使用合成聚合方式
作者:网络发烧程序猿 |
发布时间:2025-06-20 |
Java中常用的设计模式解析
1. 观察者模式
观察者模式,又称发布-订阅模式,它定义了对象之间的一对多依赖关系。当目标对象(被观察者)的状态发生变化时,它的所有依赖者(观察者)都会收到通知。
优点:
- 一个观察目标可以对应多个观察者,增加或删除观察者灵活。
- 目标对象和观察者松耦合,易于扩展。
缺点:
- 通知所有观察者可能耗时。
- 循环依赖可能导致系统崩溃。
- 观察者无法得知具体变化。
2. 抽象工厂模式
抽象工厂模式用于创建相关对象的家族,确保客户端始终使用同一产品族的对象。
缺点:
- 添加新产品族对象时,需要修改接口及其所有子类。
3. 单例设计模式
单例设计模式确保系统中某个类只有一个实例,通过公共访问点提供这个实例。
优点:
- 节约系统资源,提高性能。
- 严格控制实例访问。
写法:
- 懒汉式单例
- 饿汉式单例
- 登记式单例
4. 策略模式
将类中经常改变的部分提取为抽象策略接口类,实现算法的可替换性。
优点:
- 动态改变对象行为。
缺点:
- 产生许多策略类。
- 客户端需要了解所有策略类。
5. 适配器模式
适配器模式将不兼容的接口转化为客户端希望的格式。
适合场景:
- 系统需要使用现有类,接口不匹配。
- 使用第三方组件,接口不同。
6. 命令模式
命令模式将请求封装成对象,解耦发送者和接收者。
优点:
- 降低系统耦合度。
- 新命令易于添加。
缺点:
- 可能产生过多具体命令类。
7. 装饰器模式
装饰器模式动态添加对象职责,比继承更灵活。
优点:
- 比继承更灵活。
- 符合开闭原则。
8. 外观模式
外观模式提供一个统一的接口,用于访问子系统中的一群接口。
优点:
- 系统易用。
- 松散耦合。
缺点:
- 对子系统限制过多。
9. 模板方法模式
模板方法模式在抽象父类中定义算法骨架,将不变的行为放到父类。
优点:
- 符合开闭原则。
- 代码复用。
缺点:
- 类个数增加。
10. 状态模式
状态模式允许对象在内部状态改变时改变行为。
优点:
- 以状态为原子改变行为。
编程设计模式六大原则
开闭原则
- 对扩展开放,对修改关闭。
里氏代换原则
- 任何基类可以出现的地方,子类一定可以出现。
依赖倒转原则
- 针对接口编程,依赖于抽象。
接口隔离原则
- 使用多个隔离的接口。
迪米特法则
- 实体应尽量少地与其他实体发生相互作用。
合成复用原则
- 尽量使用合成/聚合方式。