嗯 顺便说一下:kindle 真是个好东西,拿着趁手,晚上座公交车,司机不开灯也能看。而且看书随时随地,大赞大赞。大部头的书终于不用放进书包了!!!
进入正题:
六大设计原则:
Single Responsibility Principle: 单一职责原则
Open Closed Principle: 开闭原则
Liskov Substitution Principle: 里氏替换原则
Law Of Demeter: 迪米特法则
Interface Segregation Principle: 接口隔离原则
Dependence Inversion Principle: 依赖倒置原则
单一职责原则:
定义:There should never be more than one reason for a class to change.
定义应该都能看懂,反正我这个大学四级都没过的都大概看懂了,哈哈
直接进入例子说明:
电话类图:注:dial:拨通电话;chat:通话;hangup:挂电话
这么一个接口包含两个职责:协议管理(dial,hangup)和数据传送(chat)
这样看来,协议接通会引起这个接口或类的变化,数据传送也会引起这个接口或类的变化。
两个原因都引起了类的变化。但是!!这两个职责并不互相影响。所以说:拆分!!!
如下关系图(画图不好画啊,幸好有VS):
这么做,我们就实现了单一职责。但是这样会导致一个问题:该方式需要把ConnectionManager和DataTransfer组合在一起才能使用,组合是一种强耦合关系拥有共同生命期,而且增加了类的复杂性,多了两个类,不好不好。修改后如下:
完美:一个类实现两个接口,两个职责融合在了一个类中,虽然一个Phone有两个原因引起了变化,但是别忘记,我们是面向接口编程。公布的是接口而非实现类。
单一职责原则的优点:
a. 类的复杂性降低
b. 可读性提高
c. 可维护性提高
d. 变更引起的风险降低
注:单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”衡量接口或类设计得是否优良,但这些都是不可度量的,所以,我们需要因项目而异,因环境而异
对于单一职责原因:接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。
@H_502_121@来源:http://blog.csdn.net/fu222cs98/article/details/21345191 原文链接:/javaschema/285683.html