周末出去参加了一趟婚礼,趁着酒店休息时间以及路上时间,抽空看了下《设计模式之禅》这本书,讲解还是相当到位的,让我这种小白也能初窥大概,趁机做了下笔记。在之后几篇文章中应该都能体现出来。
嗯 顺便说一下: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组合在一起才能使用,组合是一种强耦合关系拥有共同生命期,而且增加了类的复杂性,多了两个类,不好不好。修改后如下:
单一职责原则的优点:
a. 类的复杂性降低
b. 可读性提高
c. 可维护性提高
d. 变更引起的风险降低
注:单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”衡量接口或类设计得是否优良,但这些都是不可度量的,所以,我们需要因项目而异,因环境而异
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。