设计模式——6大设计原则
1、单一职责原则
单一职责原则的英文名称是Single Responsibility Principle,简称是SRP。
单一职责的定义是:有且仅有一个原因引起类的变更。
单一职责原则要求一个接口或者一个类只有一个原因引起变化,也就是说一个接口或类只有一个职责,它就负责一件事情。
建议是:接口一定要做到单一职责,类的世界尽量做到只有一个原因引起变化。
2、里氏替换原则
里氏替换原则的英文名称是Liskov Substitution Principle,简称是LSP。
里氏替换原则的定义:所有引用基类的地方必须能透明的使用子类的对象。通俗的讲,只要父类能出现的地方子类都可以出现,而且替换为子类也不会产生任何错误或异常。
里氏替换的定义包含以下四层含义:
(1)、子类必须完全实现父类的方法
(2)、子类可以有自己的个性
(3)、覆盖或实现父类的方法时输入参数可以扩大
已经不是继承了,是方法的重载。
子类中的前置条件必须与超类中被重载的方法的前置条件相同或者更宽松。
(4)、覆写或实现父类的方法时输出结果可以被缩小
3、依赖倒置原则
依赖倒置原则的英文名称是Dependence Inversion Principle,简称是DIP。
依赖倒置原则的定义,有如下三层含义:
高层模块不应该依赖底层模块,两者都应该依赖其抽象。
抽象不应该依赖具体细节
细节应该依赖抽象
依赖倒置原则在java中的表现是:
模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。
接口或抽象类不依赖于实现类
实现类依赖接口或抽象类
更加精简的定义就是“面前接口编程”——OOD(Object-Oriented Design,面向对象涉及)的精髓之一。
依赖的三种写法:
(1)、构造函数传递依赖对象
(2)、Setter 方法传递依赖对象
(3)、接口生命
4、接口隔离原则
接口隔离原则的定义:通俗点讲,接口尽量细化,同时接口中的方法尽量少。
接口隔离原则与单一职责之间的区别
单一职责要求的是类和接口职责单一,注重的是职责,这是业务逻辑上的划分,而接口隔离原则要求接口的方法尽量少。
接口隔离原则是对接口进行规范约束,其包含以下4层定义:
(1)、接口要尽量小
(2)、接口要高内聚
高内聚就是提高接口、类、模块的处理能力,减少对外的交互。
(3)、定制服务
定制服务就是单独为一个个体提供优良服务。
(4)、接口设计是有限度的
接口的设计粒度越小,系统越灵活,这是不争的事实。
在实践中,可以根据以下几个规则来衡量:
(1)、一个接口只服务一个子模块或业务逻辑
(2)、通过业务逻辑压缩接口中的public 方法,接口时常去回顾,尽量让接口达到“满身筋骨肉”,而不是“肥嘟嘟”的一大堆方法。
(3)、已经被污染了的接口,尽量去修改,若变更风险较大,则采用适配器模式进行转化处理。
(4)、了解环境,拒绝盲从。每个项目或产品都有其特定的环境因素,别看到大师是这样做的你就照抄。
5、迪米特法则
迪米特法则的英文名称是Law Of Demeter(LoD),也称最少知识原则(Least Knowlede Principle,LKP)
迪米特法则的定义是:一个对象应该对其他对象有较少的了解。
迪米特法则对类的低耦合提出了明确的要求,其包含以下4层含义:
(1)、只和朋友交流
(2)、朋友之间也是有距离的
(3)、是自己的就是自己的
(4)、谨慎使用Serializable
6、开闭原则
开闭原则的定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
软件实体包含以下几个部分:
项目或软件产品中按照一定的逻辑规则划分的模块
抽象和类
方法
2014-07-22 10:01:13
出处:http://www.cnblogs.com/BestNow/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。