美文网首页
设计模式3:面对对象设计七大原则

设计模式3:面对对象设计七大原则

作者: _浅陌 | 来源:发表于2020-12-17 17:19 被阅读0次

    1.开闭原则(open close principle)

    定义:对扩展开放,对修改关闭

    当应用需求改变时,在不修改软件实体的源代码或者二进制的前提下,可以扩展该模块的功能,以满足新的需求。

    方法:抽象约束,封装变化

    通过接口或者抽象类定义相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中。

    2.里氏代换原则(liskov substitution principle LSP)

    定义:继承的原则—继承必须确保超类所拥有的性质在子类中仍然成立。任何基类可以出现的地方,子类一定可以出现。

    方法:子类可以扩展父类的功能,但不能改变父类原有的功能。即尽量不要重写父类的方法。

    1.子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法

    2.子类中可以增加自己特有的方法

    3.当子类的方法重载父类的方法时,方法的前置条件(即方法的输入参数)要比父类的方法更宽松

    4.当子类的方法实现父类的方法时,方法的后置条件(即方法的返回值)要比父类的方法更严格或相等

    3.依赖倒置原则(dependence inversion principle)

    定义:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。核心思想表现为:面向接口编程,依赖于抽象而不依赖于具体

    方法:面向接口编程

    1.每个类尽量提供接口或者抽象类,或者两者都具备

    2.变量的生命类型尽量是接口或者是抽象类。

    3.任何类都不应该从具体类派生。

    4.使用继承时尽量遵循里氏替换原则

    4.单一职责原则(single responsibility principle)

    定义:规定一个类应该有且仅有一个引起它变化的原因。它要求控制类的粒度大小,将对象解耦,提高其内聚性。

    单一职责原则同样适用于方法。一个方法应尽可能做好一件事情。

    5.接口隔离原则(interface segregation principle)

    定义:将臃肿庞大的接口拆分成更小和更具体的接口。任何类不应该被迫依赖于它不使用的方法。

    实现:为各个类建立他们需要的专用接口,不要试图建立一个庞大的接口供所有依赖它的类去调用。

    1.接口尽量小,但是要有限度。一个接口只服务于一个子模块或者业务逻辑。

    2.为依赖接口的类定制服务。只提供调用者需要的方法,屏蔽不需要的方法。

    3.提高内聚,减少对外交互。使接口用最少的方法完成最多的事情。

    6.迪米特法则(最少知道原则)(demeter principle)

    定义:只与你的直接朋友交谈,不跟陌生人说话。一个实体应当尽量少的与其他实体之间发生直接的相互作用,可以通过第三方转发该调用,使得系统功能模块相对独立。

    一个对象应该对其它对象保持最少的了解。

    1.从依赖着的角度来说,只依赖应该依赖的对象

    2.从被依赖的角度来说,只暴露应该暴露的方法。

    7.合成复用原则(composite reuse principle)

    定义:复用时,尽量使用组合、聚合等关联关系来实现,而不是使用继承。

    继承复用破坏了类的封装行。因为继承会将父类的实现细节暴露给子类,父类对子类是透明的,所以这种复用又称为“白箱”复用。耦合度高,限制了复用的灵活性。

    方法:将已有的对象纳入新对象中,作为新对象的成员对象来实现。新对象可以调用已有对象的功能,从而达到复用。

    相关文章

      网友评论

          本文标题:设计模式3:面对对象设计七大原则

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