`

设计模式的原则

 
阅读更多

 

设计模式的设计原则:

1)开闭原则(OCP
    
对扩展开发,对修改关闭

解决问题的关键在于抽象化,对变化的部分进行抽象

 

2)里氏代换原则(LSP

任何基类出现的地方,子类一定可以出现。

它是对开闭原则的有效补充,正如前面所述,实现开闭原则的关键步骤就是在于抽象化,而继承关系则是抽象化的具体实现,所以里氏代换原则则是对实现抽象化的具体步骤的规范。

一般情况下,违背了里氏原则的一定也违背了开闭原则,反之呢,则不一定。

 

3)依赖倒转原则

要依赖于接口,不要依赖于底层的具体实现

       其实这个原则跟第一条的开闭原则有很多的相似性,实际上,他们之间是关系是目标和手段的关系,开闭原则是目前,而依赖倒装则是达成这一目标的手段。

 

4)接口隔离原则

   提供尽可能小的单独接口,而不是提供大的总接口

 

5)组合/聚合复用原则

   要尽量使用组合/聚合,而不是继承关系达到复用。

 

6)迪米特法则

    应尽可能少的与其他实体发生相互作用,

    1. 狭义的迪米特法则=====如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果其中一个类需要调用其中一个类的方法的话,可以通过第三者来转发这个调用。(当然前提是这个第三者跟这两个类必须德直接通信)

   2.广义上的迪米特法则=====在软件系统中,一好模块设计的好不好的最主要,最重要的一个标志就是该模块在多大的程度上将自己的内部数据和其他与实现相关的细节隐藏起来。

     广义上的迪米特法则在类的设计上的体现有:

     1)优先考虑将一个类设置为不变类  

           即使一个类是可变的,也谨慎的设置属性赋值方法(settXXX),除非是必须需要,否则不要为一个属性设置赋值方法

    2)尽量降低一个类的访问权限

    3)谨慎使用serializable

           如果一旦将一个类设置为serializable的,那么就不能在新版本中修改这个类的内部结构,包括private的方法和句段。

    4)尽量降低成员的访问权限、

    广义上的迪米特法则在在代码层次上的实现:

     1)控制局域变量的有效范围  

           也就说,能用局部变量就用局部变量了,使得变量的范围尽可能的小

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics