初探设计模式(一)

近来决定好好学习一下设计模式,为以后编写开源框架之路打打基础。

1)里氏代换原则 ---- 子类型必须能够替换掉它们的父类型。

父类类型的模块在无需修改的情况下,就可以通过不同的子类得到扩展。


2)开放-封闭原则 ---- 程序的实体对象(模块、类、函数等)应该可以进行扩展,但不应该可以修改。

两个特征:对于扩展是开放的;对于修改是封闭的

实现开放-封闭原则的核心思想就是面向抽象编程,而不是面向具体编程,因为抽象相对来说是稳定的。让类去依赖于固定的抽象,所以对于修改来说就是封闭的;而通过面向对象的继承以及多态的机制,可以实现对抽象体的继承,通过重写改变其固有行为,实现新的扩展方法。

变化发生时,我们就创建抽象来隔离以后发生的同类变化。

关键在于实现抽象化,并且从抽象化得出具体化的实例。


3)依赖倒转原则 ---- 程序的高层模块不应该依赖于低层模块,但两者都应该依赖于抽象;抽象不应该依赖于细节,而细节应该依赖于抽象。(解读为:面向对象应当面向接口编程,而不是面向实现编程。)

通过抽象(接口或抽象类)使各个类或模块的实现彼此独立,互不影响,从而实现模块间的松散耦合。

几条规范:

1.每个类尽量都继承自接口或抽象类,或者接口和抽象类两者都具备。

2.变量的显示类型尽量是接口或是抽象类。

3.尽量避免从具体类派生。

4.尽量不要覆盖基类的方法。


4)合成/聚合复用原则  ---- 尽量不使用类基础,而尽量使用合成/聚合。

在面向对象设计中,有两种基本的方法可以实现复用:合成/聚合;继承。

聚合表示比较弱的拥有关系,具体表现为:A可以包括B,但B不是A的一部分。(鱼和鱼群)

合成表示比较强的拥有关系,体现的是严格的整体与部分之间的关系,并且部分与整体有相同的生命周期。(手臂和身体)

合成/聚合复用原则有以下优点:

1.新的对象存取子对象的唯一办法是通过子对象的接口。

2.复用是黑箱复用,因为子对象的内部细节是新对象看不见的。

3.相互依赖性较小。

4.可以在运行时动态进行。


5)迪米特法则  ---- 如果两个类间不必直接通信,则这两个类不应该发生直接的相互作用。如果其中的一个类需要调用另一个类的某个方法,可以通过第三方来转发这个调用。(强调类之间的松散耦合)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 3,908评论 3 14
  • 设计原则就是在设计模式背后更为深层的、更具有普遍性的、共同的思想原则,是提高软件系统的可维护性和可复用性的指导原则...
    苏先生Tongson阅读 1,209评论 0 0
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 3,995评论 1 15
  • 我们在应用开发中,一般要求尽量做到可维护性和可复用性 应用程序的复用可以提高应用程序的开发效率和质量,节约开发成本...
    Yochi阅读 539评论 0 0
  • 面向对象设计的五大原则 单一职责原则(SRP) 一个类应该仅有一个职责。 开放封闭原则(OCP) 对扩展开放,...
    LiuHDme阅读 1,496评论 0 3