如何实践设计原则

http://blog.csdn.net/horkychen/article/details/50486268

大家都知道遵循设计原则是开发高质量软件的重要基础,但实际运用时并不容易。Booch在<<面向对象分析与设计>>中提出了四个基础原则:

  • 抽象   核心思想是不变性的概念。去除不关心的属性,而强化重要的属性,帮助人们思考要做什么。
  • 封装  核心是分离关注和信息隐藏,让程序借助最少的工作进行可靠的修改。
  • 模块化  核心思想是分而治之,各个模块应当高内聚、低耦合。
  • 层次结构  核心是对抽象的分级和排序,可以简化对系统的理解。

这些概念看起都比较容易理解,但实际运用并不简单。所以<<Refactoring for Software Design Smells: Managing Technical Debt>>(哪位手上有这个资源,可以分享一下。)的作者们使用所谓的使能技术(enabling techniques),为每个原则提出实践的建议:

详细内容,请查看原文: How to apply design principles in practices.

时间: 2024-11-08 21:57:36

如何实践设计原则的相关文章

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

经过前面深入的阐述,SOLID的原则我们已经基本上讲清楚了,但如果想熟练的应用SOLID原则,仅仅知道SOLID是什么(what)还不够,我们还需要知道SOLID原则在什么时候和什么场景应用(when或where). 幸运的是,SOLID原则的5个独立原则在实际应用中基本上都是独挡一面,并不会在某个地方需要同时从可选的几个原则中挑选一个最优的原则来应用,这样大大降低了我们应用SOLID原则的难度. SOLID原则具体的应用场景如下: SRP原则:用于类的设计 当我们想出一个类,或者设计出一个类的

微观SOA:服务设计原则及其实践方式

大 量互联网公司都在拥抱SOA和服务化,但业界对SOA的很多讨论都比较偏向高大上.本文试图从稍微不同的角度,以相对接地气的方式来讨论SOA, 集中讨论SOA在微观实践层面中的缘起.本质和具体操作方式,另外也用相当篇幅介绍了当今互联网行业中各种流行的远程调用技术等等,比较适合从事实际工作 的架构师和程序员来阅读. 为了方便阅读,本话题将分为两篇展现.本文是上篇,着眼于微观SOA的定义,并简单分析其核心原则. 亚马逊CEO杰夫•贝佐斯:鲜为人知的SOA大师 由于SOA有相当的难度和门槛,不妨先从一个

连载:面向对象葵花宝典:思想、技巧与实践(39) - 设计原则 vs 设计模式

又是设计原则,又是设计模式,到底该用哪个呢? ============================================================================= 在"设计模型"一章中,我们提到设计原则和设计模式是互补的,设计原则和设计模式互补体现在:设计原则主要用于指导"类的定义"的设计,而设计模式主要用于指导"类的行为"的设计. 举一个很简单的例子:假设我们要设计一个图形类Shape,这个类既支持三角形,

[转]微观SOA:服务设计原则及其实践方式

转了收藏,以后再看... 出处 上:http://kb.cnblogs.com/page/505537/ 下:http://kb.cnblogs.com/page/505538/ 大量互联网公司都在拥抱SOA和服务化,但业界对SOA的很多讨论都比较偏向高大上.本文试图从稍微不同的角度,以相对接地气的方式来讨论SOA,集中讨论SOA在微观实践层面中的缘起.本质和具体操作方式,另外也用相当篇幅介绍了当今互联网行业中各种流行的远程调用技术等等,比较适合从事实际工作的架构师和程序员来阅读. 为了方便阅读

Java程序员应该了解的10个面向对象设计原则

面向对象设计原则: 是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator.Observer这样的设计模式,而不重视面向对象的分析和设计.甚至还有经验丰富的Java程序员没有听说过OOPS和SOLID设计原则,他们根本不知道设计原则的好处,也不知道如何依照这些原则来进行编程. 众所周知,Java编程最基本的原则就是要追求高内聚和低耦合的解决方案和代码模块设计.查看Ap

第2章 面向对象的设计原则(SOLID):3_依赖倒置原则

3. 依赖倒置原则(Dependence Inversion Principle,DIP) 3.1 定义 (1)要依赖抽象,不要依赖具体的实现类.简单的说就是对抽象(或接口)进行编程,不要依赖实现进行编程,这样就降低了客户与实现模块间的耦合.包含3层含义: ①高层模块不应依赖低层模块,两者都应该依赖于抽象 ②抽象不应该依赖细节 ③细节应该依赖于抽象 (2)何为“高层模块”和“低层模块” ①“低层模块”:每个逻辑的实现都是原子逻辑组成,不可分割的原子逻辑就是低层模块.一般和具体实现相关. ②“高层

主流MVC框架的设计模式及遵守的软件设计原则

原文地址,会不断更新  http://it.zuocheng.net/mvc-design-pattern-design-principle-summary   作程的技术博客 本文以主流的MVC框架为例,比如Java 的SSH.PHP的Symfony和Zend Framework ,在简单地剖析他们的设计原理之后,找到其中使用的设计模式:鉴赏他们的代码实现,查看设计者们都遵守了哪些软件设计原则.作此文,一为学习,二为总结.其中下面所写内容可能并不全面,也可能不准确,但会不断修改完善. 框架模式

Java程序员应该了解的10个设计原则

引用: http://www.cnblogs.com/leehongee/archive/2012/03/18/2404760.html 面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator.Observer这样的设计模式,而不重视面向对象的分析和设计.甚至还有经验丰富的Java程序员没有听说过OOPS和SOLID设计原则,他们根本不知道设计原则的好

RESTful API的设计原则

最近一直在做公司的一个API平台的项目,前后大约有半年多了,中间穿插了好多其他的项目一起做的.上周经理要求写文档,我就重新打开项目开始检阅之前的代码,发现好多地方当初设计的并不合理,忽然就想到,一个好的API平台,应该怎么来设计呢?有哪些规范要遵守呢?面对自己的项目,感觉好多地方都要改,但是已经有人在用了,怎么办?全都要改动吗?所以就上网找解决方案,然后就发现一精品贴,现转载过来,以备不时查阅. 原文地址:http://www.cnblogs.com/moonz-wu/p/4211626.htm