美文网首页
面向对象设计的六大基本原则

面向对象设计的六大基本原则

作者: Dorom_81d0 | 来源:发表于2018-08-14 15:36 被阅读0次

    面向对象设计的六大基本原则:

    1)开闭原则

    2)里氏代换原则

    3)依赖倒转原则

    4)接口隔离原则

    5)迪米特法则

    6)合成/聚合复用原则

    依次解释六大基本原则:

    1) 开闭原则: 

     即面向扩展开放,面向修改封闭,也就是说系统支持扩展,但是不支持修改。

     为什么这么做?

    在开发阶段,我们都知道,如果对一个功能进行扩展,如果只是一味地对方法进行修改,可能会造成一些问题,诸如 可 能会引入新的bug,或者增加代码的复杂度,对代码结构造成破坏、冗余,还需要重新进行全面的测试。那么该怎么解决这些问题?很简单,这就需要系统能够支持扩展,只有扩展性良好的系统,才能在不进行修改已有实现代码的基础上,引进新的功能。

     我们应该怎么做?

    要做到开闭原则,就需要多使用抽象类或者接口,将相似的类进行抽象,将公有的功能引入到抽象类中,这样在进行扩展时,只需要依据抽象类,生成新的子类即可。

    2) 里氏代换原则:

     即任何使用基类的地方,都能够使用子类替换,而且在替换子类后,系统能够正常工作。

     为什么这么做?

    采用里氏替代原则可以增强程序的健壮性,版本升级的时候可以保持非常好的兼容性,即使增加子类,原有的子类也可以继续运行。

     我们应该怎么做?

    在引用基类的地方就能引用子类实现

    3) 依赖倒转原则:

     即我们的client类要依赖于抽象,而不是依赖于具体,也就是我们经常听到的“要面向接口编程”。

     为什么这么做?

    减少类间的耦合性,提高代码的可读性和可维护性。

     我们应该怎么做?

    a、每个类尽量都有接口和抽象类,或者抽象类和接口都有。

    b、变量的表面类型尽量是接口或者是抽象类。

    c、任何类都不应该从具体类派生。(但是在做二次开发的时候,我们无法获得高层代码的时候例外),规则不是绝对的。

    d、尽量不要覆写基类已经实现好的方法。

    4) 接口隔离原则:

      即应该将接口粒度最小化,将功能划分到每一个不能再分的子角色,为每一个子角色创建接口,通过这样,才不会让接口的实现类实现一些不必要的功能。

     为什么这么做?

    避免让接口的实现类实现一些不必要的功能

     我们应该怎么做?

    建立单一的接口,不要建立臃肿的庞大的接口,也就是说接口的方法尽量少。

    5) 迪米特法则:

     即尽量减少类之间的依赖关系.

     为什么这么做?

           降低类之间的耦合。

     我们应该怎么做?

           在应用中最直接的实现就是在两个类中间建一个中介类。但是这样可能会造成中介类的澎爆。

    6) 合成/聚合复用原则:

     即少用继承,多用组合。

     为什么这么做?

    优先使用对象的合成/聚合将有助于你保持每个类被封装,并被集中在单个任务上。这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。

     我们应该怎么做?

    使用组合也就是将两个类之间建立关联关系,将一个类做为另一个类的属性。

    继承与组合主要是区分两个角色之间是"is a"还是"has a"的关系,如果是"is a"就需要使用继承,而如果是"has a"就需要使用组合。

    例如笔可以分为钢笔和油笔,这就是is a的关系,但是油笔与笔芯就是has a的关系。

    相关文章

      网友评论

          本文标题:面向对象设计的六大基本原则

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