本文共 2162 字,大约阅读时间需要 7 分钟。
设计模式
在软件开发中,设计模式是一种解决常见问题的有效方法,它提供了一系列可重复使用的解决方案。以下是几种常见的设计模式及其分类:
创建型模式
创建型模式关注对象的创建过程,隐藏了对象的创建逻辑,用户通过接口创建对象,而不是直接使用new关键字。常见的创建型模式包括:
- 工厂模式(Factory Pattern):通过工厂类创建对象,AbstractFactory 和 FactoryMethod 为核心接口。
- 抽象工厂模式(Abstract Factory Pattern):扩展工厂模式,提供多个工厂类,支持不同的产品线。
- 单例模式(Singleton Pattern):确保一个类只有一个实例,可以通过 ThreadLocal 或 Enum 实现。
- 建造者模式(Builder Pattern):用于构建复杂对象,通过步骤式构建实现。
- 原型模式(Prototype Pattern):通过复制现有对象来创建新对象,减少内存开销。
结构型模式
结构型模式关注类和对象的组合,通过继承和接口的组合定义对象的行为。常见的结构型模式包括:
- 适配器模式(Adapter Pattern):将一个接口转换为另一个接口,解决兼容性问题。
- 桥接模式(Bridge Pattern):将抽象部分与具体实现分离,支持扩展。
- 过滤器模式(Filter/Criteria Pattern):在数据流中加滤镜,实现过滤功能。
- 组合模式(Composite Pattern):将多个对象组合成一个整体,支持动态配置。
- 装饰器模式(Decorator Pattern):动态地添加功能到对象上,通过装饰器实现。
- 外观模式(Facade Pattern):为子系统提供一个统一的接口,简化外部访问。
- 享元模式(Flyweight Pattern):通过共享单个实例来减少资源消耗。
- 代理模式(Proxy Pattern):为对象提供替代实现,控制访问权限。
行为型模式
行为型模式关注对象间的通信,通过定义对象的行为来实现功能。常见的行为型模式包括:
- 责任链模式(Chain of Responsibility Pattern):将请求沿着链路传递,实现分发和处理。
- 命令模式(Command Pattern):将操作抽象为命令对象,支持执行和撤销。
- 解释器模式(Interpreter Pattern):解析命令字符串,执行相应操作。
- 迭代器模式(Iterator Pattern):提供随机访问和遍历的接口,支持双向操作。
- 中介者模式(Mediator Pattern):通过中介对象减少对象之间的耦合。
- 备忘录模式(Memento Pattern):保存对象状态,支持恢复功能。
- 观察者模式(Observer Pattern):定义对象的状态改变,通知相关对象。
- 状态模式(State Pattern):通过状态对象管理对象的行为变化。
- 空对象模式(Null Object Pattern):在空对象上提供类似合法对象的行为。
- 策略模式(Strategy Pattern):通过策略对象选择算法,支持动态变化。
- 模板模式(Template Method Pattern):提供一个算法骨架,允许子类扩展。
- 访问者模式(Visitor Pattern):允许访问者遍历对象结构,执行操作。
J2EE模式
J2EE模式关注表示层,提供了一套解决问题的标准模式。常见的J2EE模式包括:
- MVC模式(MVC Pattern):分离模型、视图和控制器,支持三层分离。
- 业务代表模式(Business Delegate Pattern):代表业务逻辑,解耦数据访问。
- 组合实体模式(Composite Entity Pattern):将多个实体组合成一个复合实体。
- 数据访问对象模式(Data Access Object Pattern):将数据访问逻辑封装,提供统一接口。
- 前端控制器模式(Front Controller Pattern):集中管理Web应用的前端逻辑。
- 拦截过滤器模式(Intercepting Filter Pattern):在J2EE应用中实现过滤器链。
- 服务定位器模式(Service Locator Pattern):定位服务实例,支持动态发现。
- 传输对象模式(Transfer Object Pattern):封装数据,传输与处理,提高效率。
设计模式中的原则
在设计模式中,遵循一些核心原则可以提高代码的可维护性和扩展性。以下是几种重要的设计原则:
开闭原则
扩展开放,修改关闭。允许新增功能而不影响现有功能,通过接口扩展而非修改源代码。 里氏代换原则
继承时,子类可以替代父类,但保持相同的行为。确保继承的类保持接口一致性。 依赖倒置原则
面向接口编程,而非实现。通过依赖注入或接口定义,实现松耦合。 接口隔离原则
将不同功能模块的接口隔离,避免一个接口实现多个功能,降低类间耦合度。 迪米特原则
最少知道原则。一个实体尽量少与其他实体发生交互,保证模块独立性。 合成复用原则
尽量使用合成/聚合,而非继承,支持更大的代码复用性,减少继承带来的问题。 通过遵循这些原则,可以在设计模式中实现更高效、更可靠的系统架构。
转载地址:http://mvht.baihongyu.com/