设计模式就是一套被反复使用,多数人知晓的,经过分类编目的、代码设计经验的总结。使用设计模式主要的目的就是为了可重用代码、让代码更容易被他人理解。
设计模式主要分为三大类,共23种:
- 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
- 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
- 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
其实还有两类:并发型模式和线程池模式。
下面我是在一个博客中看到的解析各个模式之间关系的图:
设计模式六大原则
- 开闭原则(Open Close Principle): 一个软件实体应当对扩展开放,对修改关闭。开闭原则也是其他五个原则的基石
- 单一职责原则(Single Responsibility Principle):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。
- 里氏代换原则(Liskov Substitution Principle):所有引用基类(父类)的地方必须能透明地使用其子类的对象。
- 依赖倒置原则(Dependence Inversion Principle):程序要依赖于抽象接口,不要依赖于具体实现。
- 接口隔离原则(Interface Segregation Principle):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。
- 迪米特法则(Law of Demeter, LoD):一个软件实体应当尽可能少地与其他实体发生相互作用。