设计模式概述和设计原则
1. 设计模式的概念
软件设计模式(Software Design Pattern),是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。
2. 设计模式的分类
设计模式主要分三类,创建型模式,结构型模式和行为型模式。
- 创建型模式:用于描述怎样创建对象。将对象的创建与使用分离。
- 结构型模式:关注的是类和对象的组合,将类和对象结合在一起形成一个更大的结构。
- 行为型模式:关注对象之间的通信。
具体分类:
模式 | 内容 |
---|---|
创建型模式 | 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) |
结构型模式 | 适配器模式(Adapter Pattern) 桥接模式(Bridge 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) 策略模式(Strategy Pattern) 模板模式(Template Pattern) 访问者模式(Visitor Pattern) |
3. 设计原则
(1)开闭原则
开闭原则即对扩展开放,对修改关闭。在不修改原有代码的情况下,可以拓展模块来实现需求。
(2)里氏代换原则
(3)依赖倒转原则
(4)接口隔离原则
使用多个隔离的接口,比使用单一接口好,目的是为了降低类之间的耦合性。
(5)迪米特法则
迪米特法则又叫作最少知识原则。如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。
(6)合成复用原则
在软件复用时,应尽量先使用组合或聚合等关联,而不是继承。