面向对象的设计原则之[Single responsibility principle]
来源:互联网 发布:淘宝1元包邮都有什么 编辑:程序博客网 时间:2024/06/05 03:34
Single responsibility principle [单一职责原则又称单一功能原则]
面向对象的七种设计原则:
1. Single responsibility principle [单一职责原则又称单一功能原则]
2. OCP:Open Closed Principle [开闭原则]
3. LSP:Liskov Substitution Principle [里氏替换原则]
4. DIP:Dependence Inversion Principle [依赖倒转原则]
5. ISP:Interface Segregation Principle [接口分离原则]
6. CRP:Composite Reuse Principle [合成复用原则]
7. LOD:Law of Demeter [迪米特原则]
我们今天先讨论下这个【单一职责】
单一职责的核心与描述
核心:解耦和增强内聚性(高内聚,低耦合)
描述:类被修改的几率很大,因此应该专注于单一的功能。如果你把多个功能放在同一个类中,功能之间就形成了关联,改变其中一个功能,有可能中止另一个功能,这时就需要新一轮的测试来避免可能出现的问题
理解:
第一: 类专注于单一功能,这个很容易理解,就是一个类就做一件事情,例如: 菜刀类就切菜,别把砍柴啊,铲土啊等等都放进去。
第二: 功能之间形成了关联,改变其中一个功能就有可能影响另外的功能。举个简单的例子:
class caidao { protected c_name; protected c_color; function qiecai($name, $color) { $this->c_name = $name; $this->c_color = $color; echo c_name . ';;;;' . c_color; } function kanchai($name, $color) { $this->c_name = $name; $this->c_color = $color; echo c_name . ';;;;' . c_color; } // and so on ....}
- 后期变更需求: 菜刀的c_name,要修改成cd_name, 那么你就会这么做
class caidao { protected cd_name; protected c_color; function qiecai($name, $color) { $this->cd_name = $name; $this->c_color = $color; echo c_name . ';;;;' . c_color; } function kanchai($name, $color) { $this->c_name = $name; $this->c_color = $color; echo c_name . ';;;;' . c_color; } // and so on ....}
这样就解决了,然后你测试qiecai() 这个function 没有问题,OK,上线,然后你就会发现,当执行kanchai()这个function时就会有问题。当然你会说这个是自己马虎,自己测试不够,没有修改到下面这个方法,测试也没有测试到位。但是你想想,如果这个类里代码一多起来,你每次有修改,你是否确定你一定能所有的都检查到?
这只是个简单的例子,当然实际开发中一般都是一些方法之间的相互调用和依赖,然后这个问题就更加会在修改之后爆发。
结论: 所以在设计类的时候,我们就要注意这个单一职责的原则,使得设计的类具有高内聚,这样才能低耦合。
欢迎拍砖。
下期我们继续讨论 原则二: 预留连接位置。
- 面向对象的设计原则之[Single responsibility principle]
- 面向对象设计原则:单一职责原则(The Single Responsibility Principle)
- IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle)
- [面向对象]The Single Responsibility Principle
- 设计模式六大设计原则之单一职责原则(Single Responsibility Principle)
- 【六大设计原则】1. 单一职责原则 -Single Responsibility Principle
- 设计原则——单一职责原则(Single Responsibility Principle)
- OO设计原则 — Single Responsibility Principle:OO设计的SRP单一职责原则
- 设计模式6大原则之单一职责原则(Single Responsibility Principle)
- 6大设计原则之单一职责原则(Single Responsibility Principle)。
- 软件设计原则之单一责任原则【Single Responsibility Principle】
- The Single Responsibility Principle (SRP) - OO设计的单一职责原则
- 单一职责原则(Single Responsibility Principle)
- 单一职责原则(Single Responsibility Principle)
- 单一职责原则(single responsibility principle,SRP)
- 单一职责原则SRP(Single-Responsibility Principle)
- 单一职责原则(Single Responsibility Principle)
- 单一职责原则(Single Responsibility Principle)
- 数据权限的研究
- Ubuntu可执行文件 ls 可以看到,执行却提示不存在
- SPI学习(一)
- java.lang.StackOverflowError 异常处理
- vue踩坑不完全指北(2)
- 面向对象的设计原则之[Single responsibility principle]
- 关于在不用Newtonsoft.Json转换的情况下快速给SqlCommand上参数的问题(Model转参数)
- mysql常用错误
- java实现计算长方形周长
- shell 函数使用方法
- 栈的压入弹出序列
- TensorFlow学习笔记--安装配置-windows
- c语言运算符优先顺序一览表
- ajax知识总结系列一