博客
关于我
设计模式
阅读量:261 次
发布时间:2019-03-01

本文共 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/

    你可能感兴趣的文章
    Node-RED中使用Notification元件显示警告讯息框(温度过高提示)
    查看>>
    Node-RED中使用range范围节点实现从一个范围对应至另一个范围
    查看>>
    Node-RED中实现HTML表单提交和获取提交的内容
    查看>>
    Node-RED中将CSV数据写入txt文件并从文件中读取解析数据
    查看>>
    Node-RED中建立TCP服务端和客户端
    查看>>
    Node-RED中建立Websocket客户端连接
    查看>>
    Node-RED中建立静态网页和动态网页内容
    查看>>
    Node-RED中解析高德地图天气api的json数据显示天气仪表盘
    查看>>
    Node-RED中连接Mysql数据库并实现增删改查的操作
    查看>>
    Node-RED中通过node-red-ui-webcam节点实现访问摄像头并截取照片预览
    查看>>
    Node-RED中配置周期性执行、指定时间阶段执行、指定时间执行事件
    查看>>
    Node-RED安装图形化节点dashboard实现订阅mqtt主题并在仪表盘中显示温度
    查看>>
    Node-RED怎样导出导入流程为json文件
    查看>>
    Node-RED订阅MQTT主题并调试数据
    查看>>
    Node-RED通过npm安装的方式对应卸载
    查看>>
    node-request模块
    查看>>
    node-static 任意文件读取漏洞复现(CVE-2023-26111)
    查看>>
    Node.js 8 中的 util.promisify的详解
    查看>>
    node.js debug在webstrom工具
    查看>>
    Node.js HTTP模块详解:创建服务器、响应请求与客户端请求
    查看>>