设计模式

80 阅读3分钟

六大原则

单一职责原则

类的职责要单一,不能将太多的职责放在一个类中

开闭原则

对扩展是开放的,但对修改是关闭的,即在不修改一个软件实体的基础上去扩展其功能

里氏代换原则

一个可以接受基类对象的地方必然可以接受一个子类对象.里氏代换原则是对“开-闭”原则的补充。实现“开闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。里氏替换原则中,子类对父类的方法尽量不要重写和重载。因为父类代表了定义好的结构,通过这个规范的接口与外界交互,子类不应该随便破坏它

依赖倒转原则

要针对抽象层编程,而不要针对具体类编程.不与具体类交互,而与具体类的上层接口交互

接口隔离原则

使用多个专门的接口来取代一个统一的接口.每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。

合成复用原则

在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚至不使用继承关系

迪米特法则

一个类对自己依赖的类知道的越少越好。无论被依赖的类多么复杂,都应该将逻辑封装在方法的内部,通过public方法提供给外部。这样当被依赖的类变化时,才能最小的影响该类。

设计模式的分类

创建型模式,五种,关注对对象创建的灵活性。

  • [单例模式] :确保某一个类只有一个实例,并且提供一个全局访问点。
  • [建造者模式]: 用来创建复杂的复合对象。
  • [工厂方法模式]:让子类来决定要创建哪个对象。
  • [抽象工厂模式]:创建多个产品族中的产品对象。
  • [原型模式]:通过复制原型来创建新对象。

结构型模式,七种,关注类和对象的组合

  • [代理模式] :控制客户端对对象的访问。
  • [组合模式]:将整体与局部(树形结构)进行递归组合,让客户端能够以一种的方式对其进行处理。
  • [适配器模式] :将原来不兼容的两个类融合在一起。
  • [装饰者模式] :为对象添加新功能。
  • [享元模式] :使用对象池来减少重复对象的创建。
  • [外观模式] :对外提供一个统一的接口用来访问子系统。
  • [桥接模式]:将两个能够独立变化的部分分离开来。

行为型模式,十一种,关注对象之间的通信

  • [策略模式]:封装不同的算法,算法之间能互相替换。
  • [状态模式] :根据不同的状态做出不同的行为。
  • [责任链模式] :将事件沿着链去处理。
  • [观察者模式]:状态发生改变时通知观察者,一对多的关系。
  • [模板方法模式]:定义一套流程模板,根据需要实现模板中的操作。
  • [迭代器模式] :提供一种方法顺序访问一个聚合对象中的各个元素。
  • [备忘录模式] :保存对象的状态,在需要时进行恢复。
  • [访问者模式] :稳定数据结构中,定义新的操作行为。
  • [中介者模式]:将网状结构转变为星型结构,所有行为都通过中介。
  • [解释器模式] :定义语法,并对其进行解释。
  • [命令模式]:将请求封装成命令,并记录下来,能够撤销与重做。 参考链接