设计原则
2015-06-23 14:55
309 查看
一、职责单一原则
二、里氏替换原则
三、接口隔离原则
四、依赖倒置原则
五、迪米特法则
六、组合\聚合复用原则
七、开闭原则
一、职责单一原则(SRP:Single responsibility principle)
定义:不要存在多于一个导致类变更的原因。俗的说,即一个类只负责一项职责。
问题由来:T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。也就是说职责P1和P2被耦合在了一起。
产生原因:没有任何的程序设计人员不清楚应该写出高内聚低耦合的程序,但是很多耦合常常发生在不经意之间, 其原因就是:职责扩散:因为某种原因,某一职责被分化为颗粒度更细的多个职责了
解决办法:遵守单一职责原则,将不同的职责封装到不同的类或模块中。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险。
二、里氏替换原则(LSP:Liskov Substitution Principle)
定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。
定义2:所有引用基类的地方必须能透明地使用其子类的对象。
三、接口隔离原则(ISP:Interface Segregation Principle)
四、依赖倒置原则
五、迪米特法则
六、组合\聚合复用原则
七、开闭原则
二、里氏替换原则
三、接口隔离原则
四、依赖倒置原则
五、迪米特法则
六、组合\聚合复用原则
七、开闭原则
一、职责单一原则(SRP:Single responsibility principle)
定义:不要存在多于一个导致类变更的原因。俗的说,即一个类只负责一项职责。
问题由来:T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。也就是说职责P1和P2被耦合在了一起。
产生原因:没有任何的程序设计人员不清楚应该写出高内聚低耦合的程序,但是很多耦合常常发生在不经意之间, 其原因就是:职责扩散:因为某种原因,某一职责被分化为颗粒度更细的多个职责了
解决办法:遵守单一职责原则,将不同的职责封装到不同的类或模块中。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险。
二、里氏替换原则(LSP:Liskov Substitution Principle)
定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。
定义2:所有引用基类的地方必须能透明地使用其子类的对象。
三、接口隔离原则(ISP:Interface Segregation Principle)
四、依赖倒置原则
五、迪米特法则
六、组合\聚合复用原则
七、开闭原则
相关文章推荐
- js游戏引擎探索指南之Collie
- GridView实现单选效果
- socket之send与发送区的大小关系
- 日语学习之沪江N3基础 20150623 -5
- UVa 11463 - Commandos
- Maven之生成测试覆盖度的插件cobertura-maven-plugin的使用
- duilib list 获取选中的行ID 获取行数 获取行指针 获取本行索引
- Ubuntu终端常用的快捷键
- 设计模式六大原则(1):单一职责原则
- eclipse-debug时直接进入/不进入/提示进入调试页面修改
- String to Integer (atoi) ***
- UV Toolkit贴图教程甜
- 在java中实现日期类型和字符串类型的转换大全(Date String Timestamp Datetime)
- C++队列实现和队列简介
- duilib list 去掉表头
- LayoutInflater的inflate函数用法详解
- ffmpeg常用基本命令
- Linux进程间通信(IPC)
- Scrum敏捷过程实践
- [XCode] XCode默认storyboard是正方形的问题