连载:面向对象葵花宝典:思想、技巧与实践(36) - 设计原则如何用?

经过前面深入的阐述,SOLID的原则我们已经基本上讲清楚了,但如果想熟练的应用SOLID原则,仅仅知道SOLID是什么(what)还不够,我们还需要知道SOLID原则在什么时候和什么场景应用(when或where)。

 

幸运的是,SOLID原则的5个独立原则在实际应用中基本上都是独挡一面,并不会在某个地方需要同时从可选的几个原则中挑选一个最优的原则来应用,这样大大降低了我们应用SOLID原则的难度。

 

SOLID原则具体的应用场景如下:

  • SRP原则:用于类的设计

当我们想出一个类,或者设计出一个类的原型后,使用SRP原则核对一下类的设计是否符合SRP要求。

 

  • OCP原则:总的指导思想

OCP原则是一个总的指导思想,在面向对象的设计中,如果能够符合LSP/ISP/DIP原则,一般情况下就能够符合OCP原则了。

除了在面向对象的软件设计中外,OCP也可以用于指导系统架构设计,例如常见的CORBA、COM协议,其实都可以认为是OCP原则的具体应用和实现。

 

  • LSP原则:用于指导类继承的设计

当我们设计类之间的继承关系时,使用LSP原则来判断这种继承关系是否符合LSP要求。

 

  • ISP原则:用于指导接口的设计

ISP原则可以认为是SRP原则的一个变种,本质上和SRP的思想是一样。SRP用于指导类的设计,而ISP用于指导接口的设计。

 

  • DIP原则:用于指导类依赖的设计

当我们设计类之间的依赖关系时,可以使用DIP原则来判断这种依赖是否符合DIP原则。

DIP原则和LSP原则相辅相成:DIP原则用于指导抽象出接口或者抽象类,而LSP原则指导从接口或者抽象类派生出新的子类。

================================================ 
转载请注明出处:http://blog.csdn.net/yunhua_lee/article/details/37900899
================================================ 

时间: 2024-11-10 01:03:09

连载:面向对象葵花宝典:思想、技巧与实践(36) - 设计原则如何用?的相关文章

连载:面向对象葵花宝典:思想、技巧与实践(26) - 类模型三板斧

类模型设计其实就是程咬金打天下 -- 三板斧 而已 :) 第一斧(照猫画虎):领域类映射 面向对象类设计首先要解决的一个问题是:类从哪里来 ? 有的人可能会认为,要发挥想象力.创造力.....等各种"力"--这种方法的主要问题是:我们不是在进行纯粹的艺术创造,而是要最终满足客户需求,而不能天马行空. 有的人可能会想到,参考其它的系统吧,把类似系统拿过来改吧改吧 --这种方法的主要问题是:如果没有其它类似系统给你参考呢 ?还有的人干脆就说:拍脑袋吧,凭感觉吧 -- 这种方法的主要问题是:

连载:面向对象葵花宝典:思想、技巧与实践(1) - 程序设计思想的发展

史前时代:面向机器 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的指令和数据.简单来说,就是直接编写0和1的序列来代表程序语言.例如:使用0000 代表 加载(LOAD),0001 代表 存储(STORE)等.  机器语言由机器直接执行,速度快,但一个很明显的缺点就是:写起来实在是太困难了,一旦你发现自己写错了,改起来更蛋疼!这样直接导致程序编写效率十分低下,编写程序花费的时间往往是实际运行时间的几十倍或几百倍.  有一个关于机器语言和比尔盖茨的笑话,是说比尔

连载:面向对象葵花宝典:思想、技巧与实践(34) - DIP原则

DIP,dependency inversion principle,中文翻译为"依赖倒置原则".   DIP是大名鼎鼎的Martin大师提出来的,他在1996 5月的C++ Reporter发表" The Dependency Inversion Principle"的文章详细阐述了DIP原则,并且在他的经典著作< Agile Software Development, Principles, Patterns>(中文翻译为:敏捷软件开发:原则.模式与

连载:面向对象葵花宝典:思想、技巧与实践(31) - OCP原则

开闭原则是一个大部分人都知道,但大部分人都不懂的设计原则! ==================================================================== OCP,Open-Closed Principle,中文翻译为"开闭原则".   当我第一次看到OCP原则时,我的感觉就是这原则也太抽象了吧,什么开,什么闭呢?   然后我去寻找更加详细的答案,最经典也是最常见的解释就是维基百科了: http://en.wikipedia.org/wiki/

连载:面向对象葵花宝典:思想、技巧与实践(35) - NOP原则

NOP,No Overdesign Priciple,不要过度设计原则.   这应该是你第一次看到这个原则,而且你也不用上网查了,因为这个不是大师们创造的,而是我创造的:)   之所以提出这个原则,是我自己吃过苦头,也在工作中见很多人吃过类似的苦头.   你可能也见过这样的场景: 产品提出了一个需求,设计师眼光非常长远,他甚至把5年后可能的业务变化都提出来并且加以设计了,让你不得不佩服设计师的高瞻远瞩的眼光,并且由衷的从心底赞叹:牛逼啊!   但很快你就会发现,设计师是很牛逼,但你开发的时候就很

连载:面向对象葵花宝典:思想、技巧与实践(30) - SRP原则

前面详细阐述了"高内聚低耦合"的总体设计原则,但如何让设计满足这个原则,并不是一件简单的事情,幸好各位前辈和大牛已经帮我们归纳总结出来了,这就是"设计原则"和"设计模式".毫不夸张的说,只要你吃透这些原则和模式并熟练应用,就能够做出很好的设计. ================================================================== [SRP原则详解] SRP,single responsibility

连载:面向对象葵花宝典:思想、技巧与实践(27) - 动态模型设计

类模型指导我们如何声明类,动态模型指导我们如何实现类! 动态模型设计一般都是在类模型设计完成后才开始,因为动态模型设计的时候一般都需要用到类模型中的类.相对类模型来说,动态模型要相对简单一些,主要原因在于动态模型设计的时候没有什么设计原则和设计模式需要应用,只需要对照用例模型,根据用例模型的特点,选取一个合适的动态模型将其表述出来即可. 动态模型在实际开发过程中有非常重要的作用,简单来说,如果没有动态模型,那么你虽然完成了类设计,但还是不能编码,或者只能编写类的声明代码(类属性.方法名称),但不

连载:面向对象葵花宝典:思想、技巧与实践(7) - “对象”新解

有了"类"的清晰定义后,"对象"就比较容易理解了. 对象就是一个具体的类,一个真实存在的类. 前面我们提到面向对象是对现实世界的模拟,那么对象就是现实世界中存在的"物体".   例如,"人"是一个类,我就是一个"人"的对象,你也是"人"的对象,奥巴马也是"人"的对象...... 又比如:你去国美买冰箱,但国美肯定没有一个单独叫做"冰箱"的东西卖给你

连载:面向对象葵花宝典:思想、技巧与实践(32) - LSP原则

LSP是唯一一个以人名命名的设计原则,而且作者还是一个"女博士"  ============================================================= LSP,Liskov substitution principle,中文翻译为"里氏替换原则".   这是面向对象原则中唯一一个以人名命名的原则,虽然Liskov在中国的知名度没有UNIX的几位巨匠(Kenneth Thompson.Dennis Ritchie).GOF四人帮