设计模式基础

面向对象的六大原则

单一职责原则

名称:Single Responsibility Principle(SRP)。

定义:一个类,应该仅有一个引起它变化的原因。简单来说,一个类中应该是一组相关性很高的函数、数据的封装。

开闭原则

名称:Open Close Principle(OCP)。

定义:软件中的对象(类、模块、函数等)应该对于扩展是开放的,但对于修改是封闭的

里氏替换原则

名称:Liskov Substitution Principle(LSP)。

定义:所有引用基类的地方必须能透明地使用其子类的对象。

此原则主要体现面向对象的“继承”特征。为了保证这种透明的无差别使用,子类在实现时不应该随意地重写父类已定义好的非抽象方法。

依赖倒置原则

名称:Dependence Inversion Principle(DIP)。

定义:一种特定的解耦形式,使得高层次模块不依赖于低层次模块的实现细节。

模块之间不应该直接产生调用关系,而应该依赖抽象(接口或抽象类)。抽象不应该依赖实现细节,而是实现细节依赖抽象。即面向接口编程

接口隔离原则

名称:Interface Segregation Principle(ISP)。

定义:类间的依赖关系应该建立在最小的接口上。

若一个接口定义得过于臃肿,则代表它的每一个实现类都要考虑所有的实现逻辑,这无形中增加了实现类的负担。

迪米特原则

名称:Law of Demeter(LOD)。又称为最少知识原则(Least Knowledge Principle)。

定义:一个对象应该对其他对象有最少的了解。

此原则体现的是“高内聚,低耦合”的思想。

  • 高内聚:将实现逻辑都封装在类的内部,对public方法以外的信息,不轻易暴露给外界。

  • 低耦合:不要让一个类依赖过多的类。而且一个类对于自己依赖的类,知道得越少越好。

设计模式的分类

设计模式主要分为三大类:创建型、结构性和行为型。

创建型模式

中文名 英文名
单例模式 Singleton
建造者模式 Builder
原型模式 Prototype
工厂方法模式 Factory Method
抽象工厂模式 Abstract Factory

结构型模式

中文名 英文名
适配器模式 Adapter
代理模式 Proxy
装饰者模式 Decorator
外观模式 Facade
桥接模式 Bridge
组合模式 Composite
享元模式 Flyweight

行为型模式

中文名 英文名
策略模式 Strategy
模板方法模式 Template Method
观察者模式 Observer
迭代器模式 Iterator
责任链模式 Chain of Responsibility
命令模式 Command
备忘录模式 Memento
状态模式 State
访问者模式 Visitor
中介者模式 Mediator
解释器模式 Interpreter