设计模式初探
· 阅读需 7 分钟
设计模式是什么?
定义
设计模式是软件设计中常见问题的典型解决方案。就像建造建筑前绘制的蓝图一样,你需要确定最终的结果和模式的功能, 而不是实现具体步骤。
通常情况下,模式包含以下内容:
- 意图:即目的,简单描述问题和解决方案。
- 动机:进一步解释问题并说明模式会如何提供解决方案。
- 结构:展示模式的每个部分和它们之间的关系。
分类
设计模式主要分为:
- 创建型模式:提供创建对象的机制, 通常用于增加已有代码的灵活性和可复用性。
- 结构型模式:介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
- 行为模式:负责对象间的高效沟通和职责委派。
- J2EE 模式:该设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。
详细表格如下(来自菜鸟教程):
模式 | 描述 | 包括 |
---|---|---|
创建型模式 | 该类模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些 对象时更加灵活。 | 工厂模式(Factory Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(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 Pattern)访问者模式(Visitor Pattern) |
J2EE 模式 | 这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。 | MVC 模式(MVC Pattern)业务代表模式(Business Delegate Pattern)组合实体模式(Composite Entity Pattern)数据访问对象模式(Data Access Object Pattern)前端控制器模式(Front Controller Pattern)拦截过滤器模式(Intercepting Filter Pattern)服务定位器模式(Service Locator Pattern)传输对象模式(Transfer Object Pattern ) |
设计模式六大原则
开闭原则
**开闭原则(Open Close Principle)**的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不需要修改原有的代码。目的是为了使程序的扩展性好,易于维护和升级。
里氏代换原则
**里氏代换原则(Liskov Substitution Principle)**是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。
依赖倒转原则
**依赖倒转原则(Dependence Inversion Principle)**是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体。