面向对象的设计原则之[Single responsibility principle]
2017-06-24 22:42
260 查看
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时就会有问题。当然你会说这个是自己马虎,自己测试不够,没有修改到下面这个方法,测试也没有测试到位。但是你想想,如果这个类里代码一多起来,你每次有修改,你是否确定你一定能所有的都检查到?
这只是个简单的例子,当然实际开发中一般都是一些方法之间的相互调用和依赖,然后这个问题就更加会在修改之后爆发。
结论: 所以在设计类的时候,我们就要注意这个单一职责的原则,使得设计的类具有高内聚,这样才能低耦合。
欢迎拍砖。
下期我们继续讨论 原则二: 预留连接位置。
相关文章推荐
- 设计模式六大原则(1)单一职责原则(Single Responsibility Principle)
- 设计模式六大原则—— 单一职责原则(SRP,Single Responsibility Principle)
- 【设计模式六大原则1】单一职责原则(Single Responsibility Principle)
- 六大设计原则-单一职责原则【Single Responsibility Principle】
- 面向对象类设计的五大原则(一)单一职责原则Single Responsibility Principle
- IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle)
- 设计模式六大原则(1):单一职责原则SRP(Single Responsibility Principle)
- Java设计模式之单一职责原则(Single Responsibility Principle)
- 设计模式六大原则(1)单一职责原则(Single Responsibility Principle)
- 六大设计原则——单一职责原则【Single Responsibility Principle】
- 设计模式六大设计原则之单一职责原则(Single Responsibility Principle)
- 6大设计原则之单一职责原则(Single Responsibility Principle)。
- [设计模式原则]单一职责原则(Single Responsibility Principle,SRP)
- "围观"设计模式(1)--单一职责原则(SRP,Single Responsibility Principle)
- 设计原则——单一职责原则(Single Responsibility Principle)
- 设计模式原则篇:(1)单一职责原则--Single Responsibility Principle
- 设计模式原则篇:(1)单一职责原则--Single Responsibility Principle
- IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle)
- IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle)
- IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle)