美文网首页
初探设计模式(一)

初探设计模式(一)

作者: wdming | 来源:发表于2015-12-07 16:09 被阅读0次

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

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

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

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

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

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

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

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

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

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

    几条规范:

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

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

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

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

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

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

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

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

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

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

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

    3.相互依赖性较小。

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

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

    相关文章

      网友评论

          本文标题:初探设计模式(一)

          本文链接:https://www.haomeiwen.com/subject/khdehttx.html