设计模式六大原则
单一职责原则SRP(Single Responsibility Principle):一个类仅有一个引起它变化的原因。
开放-关闭原则OCP(Open-Closed Principle):一个类应该对扩展开放,对修改关闭。开闭原则是设计中非常核心的一个原则。
依赖倒置原则:要依赖于抽象,不要依赖于具体。要做到依赖倒置,典型的应该做到: 1:高层模块不应该依赖底层模块,二者都应该依赖于抽象。 2:抽象不应该依赖于具体实现,具体实现应该依赖于抽象。 很多人觉得,层次调用的时候,高层模块依赖‘底层模块的抽象接口’,其实这是一个典型的误解。其实应该是高层模块影响底层模块的具体实现。因此这个底层的接口应该是高层实现的,然后由底层实现。也就是说底层的接口的所有权在高层模块,因此是一种所有权的倒置。
里氏替换原则:子类必须能替换掉它们的父类型。
接口隔离原则:不应该强迫客户端去依赖他们不用的方法。有时候,有些接口非常的庞大,客户端在使用这样的接口的时候,通常会有很多他们不需要的方法,这对客户端来说是一种接口污染。相当于强迫用户在一大堆‘垃圾方法’中去寻找他们需要的方法。分离接口的方式,除了直接进行代码分离之外,还可以进行委托来分离接口,在能够进行多重继承的语言中,还可以采用多重集成的方式来进行分离。
最少知识原则:只和你的朋友谈话。尽量减少对象之间的交互,对象只和自己的朋友谈话,也就是只和自己的朋友交互,从而松散类之间的耦合。
其他原则:1:面向接口编程;2:优先使用组合,而非继承。等等
设计模式分类:
创建型:抽象了对象实例化的过程,用来帮助创建对象的实例。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。
结构型:描述如何组合类和对象已获得更大的结构。GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。
行为型:描述算法和对象间职责的分配。GoF 中提供了模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器等 11 种行为型模式。