设计模式的六大原则

前言

设计模式的几大原则包括:

单一职责原则(Single Responsibility Principle,SRP)
开放-封闭原则(Open Closed Principle,OCP)
依赖倒转原则(Dependency Inversion Principle,DIP
里氏代换原则(Liskov Substitution Principle,LSP)
合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP)
最小知识原则(Principle of Least Knowledge,PLK,也叫迪米特法则)。


1、单一职责原则

含义:就一个类而言,应该仅有一个引起它变化的原因。

问题:小菜刚换了手机,新手机功能很多,但弊端也出来了。一次偶然间看到了一种类似飞碟的东西,他连忙用手机录下来。心想这可是个大新闻了,可以得瑟一次了。没想到传到电脑上时,手机拍的东西根本看不清楚。

解决办法:手机的功能多了,它的职责也就多了。但它的录像功能是比不上摄像机的,如果是摄像机录像的话,效果一定会好很多的。

补充:这一原则有利于代码维护,提高可复用性和灵活性。



2、开放-封闭原则

含义:软件实体(类、模块、函数等)应该可以扩展,但不能修改。

问题:香港本就是中国的领土,可它长期实行的是资本主义制度,而我国是社会主义制度,要如何做才能使香港顺利回归祖国的怀抱并且能够继续更好的发展呢?

解决办法:我国的社会主义制度不能变,香港的制度也不能变。但为了能够回归祖国完成统一,我们实行了“一国两制”的创新举措。



3、依赖倒转原则

含义:高层模块不应该依赖低层模块。两个都应该抽象。抽象不依赖细节,细节应该依赖抽象。

背景:小菜帮忙修电脑

感悟:无论是电脑还是电视,它们的内部零件都是针对接口设计的,如果针对实现来设计,就会增加很多不必要的麻烦。这就是不依赖的意思。



4、里氏代换原则

含义:子类型必须能够替换掉它们的父类型。

问题:鸟是可以飞的,企鹅不会飞,那么企鹅是鸟吗?企鹅可以继承鸟吗?

解决办法:在生物学上,企鹅是一种鸟。但在我们按这里讲的,企鹅不能继承鸟类。因为鸟是可以飞的,但企鹅飞不了。



5、迪米特法则

又叫最少知道原则

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

问题:小菜第一天上班,他的主管不在。人事的小杨介绍小张给小菜认识,结果小张也有事。而作为新人的小张又不可能认识IT部的其他人,因此就耽误了事。

解决方法:在小菜上班后,人事的小杨应该打电话给IT部,让主管安排人给小菜装电脑。这样的话,即使小张有事,也可以麻烦IT部的其他人代其处理。也就是说,只要小菜认识IT部的主管就可以由他来完成工作了。这样,小菜也就不会手足无措了。

补充迪米特法则的初衷在于降低类之间的耦合。由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系。

迪米特法则不希望类直接建立直接的接触。



6、合成/聚合复用原则

含义:尽量使用合成/聚合,尽量不要使用继承。

聚合是一种弱的‘拥有’关系,而合成则是一种强的‘拥有’关系,是整体与部分的关系。(这与聚合、组合的定义类似。)


                



      


小结:

设计模式就是实现了这些原则,有利于代码维护,提高可复用性和灵活性。

posted @ 2014-03-05 20:39  Sherry&Yang  阅读(134)  评论(0编辑  收藏  举报