(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.在代码中,对象与服务没有直接联系,而是容器负责将这些联系在一起。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!