现在的位置: 首页 > 综合 > 正文

软件设计的基本原则

2013年08月11日 ⁄ 综合 ⁄ 共 1328字 ⁄ 字号 评论关闭

(1) dot not repeat yourself
 在两个或者多个地方发现相似的代码的时候,我们需要把它们的共性抽象出来,形成一个唯一的方法,然后改变现有地方的代码让他们以合适
 的参数调用这个新方法。

 

(2) Program to an interface,not an implement
 设计模式中的重要思想,注重接口,而不是实现,依赖接口而不是实现。

 

(3) command - query
 查询:当一个方法返回一个值回应一个问题的时候,它就是查询的性质。
 命令:当一个方法要改变对象的状态的时候,它就是命令性质。
 在设计接口时候保证接口的单一化,保证方法的行为为严格的命令或者查询。

 

(4) principle of least Knowledge 最少知识原则
 对于对象o 中的方法m ,m 只能访问如下对象的方法
 1,对象0。
 2,与o直接相关的Component object。
 3,由方法M创建或者实例化的对象。
 4,作为方法M的参数对象。
 final String outputDir = ctxt.getOptions().getScratchDir().getAbsolutePath();
 这么长的一串对其它对象的细节,以及细节的细节,细节的细节的细节……的调用,增加了耦合,
 使得代码结构复杂、僵化,难以扩展和维护。

 

(5) Single Responsibility Principle 职责单一原则
 其核心的思想是:一个类,只做一件事,并把这件事做好,其只有一个引起它变化的原因。
 单一职责原则可以看作是低耦合、高内聚在面向对象原则上的引申。
 
(6) Open/close Principle   开闭原则
 关于开发封闭原则,其核心的思想是:模块是可扩展的,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。
 对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。
 对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。
 
(7) Dependency Inversion Principle (DIP) – 依赖倒置原则
 高层模块不应该依赖于低层模块的实现,而是依赖于高层抽象。
 举个例子,墙面的开关不应该依赖于电灯的开关实现,而是应该依赖于一个抽象的开关的标准接口,这样,
 当我们扩展程序的时候,我们的开关同样可以控制其它不同的灯,甚至不同的电器。
 这就好像浏览器并不依赖于后面的web服务器,其只依赖于HTTP协议。这个原则实在是太重要了,社会的分工化,
 标准化都是这个设计原则的体现。

(8) Hollywood Principle – 好莱坞原则
 好莱坞原则就是一句话——“don’t call us, we’ll call you.”。意思是,好莱坞的经纪人们不希望你去联系他们,
 而是他们会在需要的时候来联系你。也就是说,所有的组件都是被动的,所有的组件初始化和调用都由容器负责。
 组件处在一个容器当中,由容器负责管理。
 简单的来讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:
 1.不创建对象,而是描述创建对象的方式。
 2.在代码中,对象与服务没有直接联系,而是容器负责将这些联系在一起。

 

抱歉!评论已关闭.