设计模式~设计模式对比
1. 简单工厂、工厂方法、抽象工厂
- 具体参考:设计模式~三种工厂模式
- 简单工厂:一个工厂方法创建不同类型的对象,一个工厂类,无抽象工厂类,适合产品线固定
- 工厂方法:一个具体的工厂类负责创建一个具体对象类型,一个抽象工厂类,所有产品共用一个工厂类,适合单一产品线可延伸产品
- 抽象工厂:一个具体的工厂类负责创建一系列相关的对象,一个抽象工厂类,每一个产品都有一个工厂类,适合固定多产品线可延伸产品
2. 代理模式、装饰模式、桥接模式
- 代理模式:代理模式通过创建一个代理类来控制对其他类的访问。代理类代表实际类并且负责实际的调用。
- 装饰模式:装饰模式通过动态地给一个对象添加一些额外的职责,来增强其原有的功能。
- 桥接模式:桥接模式把抽象部分和它的实现部分分离,使它们都可以独立地变化。
- 总结:代理模式主要关注于控制对其他类的访问,装饰模式主要关注于增强对象的功能,桥接模式主要关注于分离抽象和实现。
3.外观模式、中介模式
- 外观模式提供了一个简化的接口,用于隐藏一组复杂的子系统。它是一种结构性设计模式,旨在简化访问复杂系统的方式。通过提供一个统一的接口,外观模式可以减少子系统与客户端之间的交互复杂度,从而提高系统的可用性。
- 中介模式(Mediator Pattern)则是一种行为性设计模式,它通过使用中介者对象来减少多个对象之间的直接交互。通过定义中介者对象,它可以协调和管理不同对象之间的交互,从而减少它们之间的耦合。
- 总结:外观模式简化了子系统与客户端之间的交互,而中介模式则减少了多个对象之间的直接交互。
4. 策略模式、状态模式、命令模式
- 策略模式(Strategy Pattern)是一种行为性设计模式,它允许将算法封装在独立的策略类中,并且可以在运行时动态替换策略。该模式通过使用组合,委托和多态等技术,以提供更好的扩展性和灵活性。
- 状态模式(State Pattern)是一种状态机模型,它通过在一个对象内维护一组状态,并在对象的状态改变时执行不同的行为,来改变对象的行为。状态模式可以使得状态的转换变得更加清晰和可维护。
- 命令模式(Command Pattern)是一种行为性设计模式,它将请求封装为独立的命令对象,以便将请求的操作、接收者和请求发送者解耦。命令模式可以支持撤销、重做、队列等操作,并且可以使得代码具有更好的可读性和可维护性。
- 总结:策略模式关注的是算法/策略替换的问题,而状态模式关注的是通过状态来改变行为,命令模式关注的是接收者与请求者的解耦问题
5、静态代理、动态代理
- 静态代理是在编译时就已经确定了代理关系的代理方式,也就是说,在程序运行前就已经确定了代理类和委托类的关系。它通常是通过定义一个代理类,然后在代理类中编写委托类的逻辑,从而实现代理功能。
- 动态代理是在程序运行时动态创建代理关系的代理方式。它通常是通过动态生成代理类,并且可以在运行时动态地更改代理关系,从而实现代理功能。动态代理比静态代理更加灵活,因为它可以在运行时动态地修改代理关系。
- 总体来说,静态代理更加简单易用,但是动态代理更加灵活,因此在不同的场景中,可以根据需要选择不同的代理方式。