首页 > 代码库 > 设计模式-六大原则

设计模式-六大原则

设计模式----六大原则






1、单一直责原则(SRP):就一个类而言,应该仅有一个引起他变化的原因


         如果一个类承担的职责过多,就等于把这些指责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。


         软件设计真正要做的许多内容就是发现职责并把那些指责相互分离。如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。



2、开放-封闭原则:累对货栈是开放的、对于更改是关闭的。


         过去的错误,如果现在想去修改,这在软件设计里面可以实现,但是在人生里面却是被禁止的。因为时光是不能倒流的。我们能做的,就是把今天做到最好,去扩宽生命的长度,而不是一味的沉溺于自己的错误。


         开放封闭原则是面向对象设计的核心、遵循原则可带来易维护、可扩展、可复用、灵活性好、开发人员应该对频繁变化的部分进行抽象、拒绝不成熟的抽象。




3、依赖倒转原则:


         高层模块不应该以来底层模块、两个都应该依赖抽象。

         抽象不应该依赖细节,细节应该依赖于抽象。


         上学这么多年,一直发现,物理学的课本里面的概念最抽象,最不容易理解,一直在想,那些写书的人,你们把课本写的通俗易懂一点会死啊。。。但是学过抽象这个词才发现,这样写有这样写的好处:概念越抽象,就越能概括大多数情况。物理学研究的非常宏观,所以它的概念理应是非常抽象的。在类的设计中,也要尽可能的抽象,以方便以后的扩展。

         也就是说要针对接口编程,不要针对实现编程。高层模块不应该依赖低层模块,两个都应该依赖抽象。(高层模块与接口或抽象类是关联关系,低层模块与接口或抽象类是继承关系。

                   


4、里氏代换原则(LSP):子类可以完全代替父类使用


         在生物学上,有个概念叫做遗传。遗传就类似继承,这保证了后代完全拥有父辈的保留下来的非常有利生存的优势。即使它们的父辈死去,它们也能完全承担自己在生物链中的职责。同时,后代还有一个独有的东西:变异。通过变异,实现优胜劣汰,让自身发展的更好。


         子类代替父类使用、扩展了功能、却不违背开放封闭原则。

                 


5、迪米特法则(LoD): 

 

         如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。


         在明代朱元璋当上皇帝后,为了防止将领拥兵自重(他还是比较做贼心虚的,明明自己就是“黄袍加身”当上皇帝的那种模式。。。),实行了一条政策,就是将领不掌管军队,而是由皇帝亲自对军队实施调度,这样,大大削弱了将领和士兵之间的联系,即使有些将领想要造反,也没有士兵拥护。朱元璋这种方法,就如同在软件设计中,减少两个类的联系一样。如果将领要调兵,要向皇帝请圣旨,然后皇帝发兵。通过减少联系来弱化关系,使其减少影响。


6  合成聚合复用


         尽量使用合成/聚合,尽量不要使用类继承。(关系越小越好、减少耦合)


         我非常信奉老舍《茶馆》里的一句话:“莫谈国事”。但是国事又是非常有意思的,让人总是会忍不住想要想一想。在官场上,有这样一种现象,比如,去年关注度很高的一位高官,一家全完。又比如,一起跟某某总统很熟,是校友什么的,然后总统一上任,就把它提拔为高官。。。。。有很多事情是变换莫测的。但是,这里有一个原则:尽量减少密切的连续,但是可以加强合作。也就是说,不要加入他们,以免将来被当成同党一网打尽,但是可以成为盟友。



                                  


—————————————完美的图———————————————

—————————chenchen—————————