每一个原则都有自己的焦点,在我们实际开发过程中讲究的是平衡,我们要考虑人力、时间、成本、质量,还有业务的扩展性。如果一开始把扩展性做得特别完美的话,成本又上来了。所以遵循设计原则也不要过度,在适当的场景去遵循即可。在设计模式当中,我们会看到设计原则的影子,同时在某些设计模式当中,并不是完全遵守这七大原则的,体现的,就是一个取舍的问题。有些设计模式可能遵循两样到三样,而破坏一样两样,最重要的是找到合适的业务场景。所以设计原则不是强行遵守的,而是要讲究一个度,讲究一个平衡,讲究一个取舍。

设计原则(接迪合里开依单)

接口隔离原则:用多个专门的接口而不使用单一的总接口,客户端不应该依赖它不需要的接口。

迪米特法则(最少知道原则):一个对象应该对其他对象保持最少的了解,尽量降低类与类之间的耦合。

合成复用原则:尽量使用对象组合/聚合,而不是继承关系来达到软件复用的目的。

里氏替换原则:如果对每一个类型为t1的对象o1都有类型为t2的对象o2,使得以t1定义的所有程序p在所有的对象o1都替换成o2,程序p的行为没有发生变化,那么类型t2是类型t1的子类型。里氏替换原则是继承复用的基石。

开闭原则:软件实体如类、模块和函数应该对扩展开放,对修改关闭。

依赖倒置原则:高层模块不应该依赖低层模块,两者都应该依赖抽象。定义的补充:抽象不应该依赖细节,细节应该依赖抽象。

单一职责原则:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。

创建型模式(抽工建单原)

关注对象的创建过程,描述如何将对象的创建和使用分离,让用户在使用对象时无须关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展。

抽象工厂模式

定义:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

工厂方法模式

定义:定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。

建造者模式

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

单例模式

定义:确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。

原型模式

定义:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。

结构型模式(代外桥装适享组)

关注如何将现有类或对象组织在一起形成更强大的结构。

代理模式

定义:为其他对象提供一种代理,以控制对这个对象的访问。

外观模式(门面模式)

定义:为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

桥接模式

定义:将抽象部分与它的实现部分解耦,使得两者都能够独立变化。通过组合的方式建立两个类之间的联系,而不是继承。

装饰模式

定义:动态地给一个对象增加一些额外的职责。就扩展功能而言,装饰模式提供了一种比使用子类更加灵活的替代方案。

适配器模式

定义:将一个类的接口转换成客户期望的另一个接口。适配器模式让那些不兼容的类可以一起工作。

享元模式

定义:运用共享技术有效地支持大量细粒度对象的复用。

组合模式

定义:组合多个对象形成树形结构以表示具有部分-整体关系的层次结构。组合模式让客户端可以统一对待单个对象和组合对象。

行为型模式(命中解观策模访责备迭状)

关注对象之间的交互,研究系统在运行时对象之间的相互通信与协作,进一步明确对象的职责。

命令模式

定义:将“请求”封装成对象,以便使用不同的请求。

中介者模式

定义:定义一个对象来封装一系列对象的交互。中介者模式使各对象之间不需要显式地相互引用,降低耦合。

解释器模式

定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。(为了解释一种语言,而为语言创建的解释器)

观察者模式(发布-订阅模式)

定义:定义对象之间的一种一对多依赖关系,使得当一个对象状态发生改变时其相关依赖对象都得到通知并被自动更新。

策列模式

定义:定义一系列算法,并将每一个算法封装起来,让它们之间可以互相替换。策略模式让算法的变化不会影响到使用算法的用户。

模板方式模式

定义:定义了一个算法的框架,并允许子类为一个或多个步骤提供实现。

访问者模式

定义:封装作用于某数据结构(如List/Set/Map等)中的各元素的操作。可以在不改变各元素的类的前提下,定义作用于这些元素的操作。

责任链模式

定义:为请求创建一个接收此次请求对象的链。避免将一个请求的发送者与接收者耦合在一起,让多个对象都有机会处理请求。将接收请求的对象连接成一条链,并沿着这条链传递请求,直到有一个对象能够处理它为止。

备忘录模式

定义:保存一个对象的某个状态,以便在适当的时候恢复对象。

迭代器模式

定义:提供一种方法顺序访问一个集合对象中的各个元素,而又不用暴露该对象的内部表示。

状态模式

定义:允许一个对象在其内部状态改变时改变它的行为。

标签: 设计模式