首页 > 技术文章 > 合成复用里有,黑箱复用和白箱复用,正如白丝和黑丝是风格不同的!

Zj141258 2020-11-28 21:28 原文

目录

    合成复用原则:

        (“白箱”复用)

        (“黑箱”复用)。

    迪米特法则:

 


 

合成复用原则:

 

    合成复用原则就是指在一个新的对象里通过关联关系

   (包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;

      新对象通过委派调用已有对象的方法达到复用其已有功能的目的。

 

    简言之:要尽量使用组合/聚合关系,少用继承。

    继承复用:实现简单,易于扩展。破坏系统的封装性;

    从基类继承而来的实现是静态的,不可能在运行时发生改变,没有足够的灵活性;

    只能在有限的环境中使用。

 


 

 

(“白箱”复用)

        组合/聚合复用:耦合度相对较低,

        选择性地调用成员对象的操作;

        可以在运行时动态进行。

 

(“黑箱”复用)

       组合/聚合可以使系统更加灵活,类与类之间的耦合度降低,

        一个类的变化对其他类造成的影响相对较少,

        因此一般首选使用组合/聚合来实现复用;

 

        其次才考虑继承,在使用继承时,需要严格遵循里氏代 换原则,

        有效使用继承会有助于对问题的理解,降低复杂度,

        而滥用继承反而会增加系统构建和维护的难度以及系统的复杂度,

        因此需要慎重使用继承复用。

 


 

 

迪米特法则:

 

    迪米特法则就是指一个软件实体应当尽少的与其他实体发生相互作用。

 

        这样,当一个模块修改时,就会尽量少的影响其他的模块,

        扩展会相对容易,在类的划分上,应当尽量创建松耦合的类,

        类之间的耦合度越低,就有利于复用,

        一个处在松耦合的类一旦被修改,不会对关联的类造成太大波及。

 

        在类的结构设计上,每一个类都应当尽量降低其成员变量和成员函数的访问权限。

        在对其他类的引用上;一个对象对其他对象的引用应当降到最低。

 


 

推荐阅读