美文网首页
(三)单一职责原则

(三)单一职责原则

作者: 寻找大海的鱼 | 来源:发表于2019-11-05 22:26 被阅读0次

    一.简介

    单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因。

    二.关于职责

    两个关于职责的重要结论
    ●职责是站在他人的角度来定义的;
    ●职责不是一件事,而是很多事情,但是这些事情都是和职责紧密相关的。
    对应到面向对象设计领域,我们可以说一个类的职责应该有如下定义
    ●类的职责是站在其他类的角度来定义的。
    ●类的职责包含多个相关功能。
      因此,SRP可以翻译成“一个类只负责一组相关的事情”,对应到代码中就是:一个类有多个方法,这些方法都是相关的。

    三.关于SRP原则范围

      由于现实世界要比理想还要复杂,一个最典型的例子就是“办公一体机”
    根据SRP原则,打印机可以设计成一个类,复印机可以设计成一个类,扫描机也可以设计成一个类,传真机还是可以设计成一个类,但偏偏就出了个“办公一体机”,这个机器集成了“打印”、“复印”、“扫描”、“传真”四个职责!
      如果我们要设计一个“办公一体机”的类,怎么也不可能设计出一个符合SRP原则的“办公一体机”的类来!
      怎么办?是SRP不正确,还是我们永远不要设计“办公一体机”这样的类?
      其实SRP没有错,“办公一体机”也应该设计,但是不要用SRP来约束“办公一体机”这样的类。
      在“办公一体机”的样例中,“打印机”、“复印机”、“扫描机”、“传真机”都是基础类,每个类都承担一个职责,而办公一体机是“聚合类”,同时集成了4种功能!
      SRP不能应用于聚合类,那么如何保证聚合类的设计质量呢?
      答案是:优先使用对象组合,而不是类继承。

    相关文章

      网友评论

          本文标题:(三)单一职责原则

          本文链接:https://www.haomeiwen.com/subject/mwgebctx.html