正确理解面向对象程序设计 中级篇(一)设计原则之SRP:单一职责原则

单一职责原则是六大面向对象原则的第一条。也是最不容易理解的一条,真正理解单一职责原则可能需要一定的编码或业务分析经验。

但,对于初学者来说,也并非无迹可寻。

首先单一职责,指的是类的职责。那么我们就可以明白是这条原则是创建类时所遵守的原则。所以我们思考单一职责的时候一定要脱离语言自带的类库、框架和第三方类库所提供的类(这些类已经被赋予职责了)。

还是创建类

回顾以前,我认为创建类是根据对象找出其的属性和方法。类中也可能关联其它的类(以全局变量或者局部变量存在)。

我们为什么会知道类中包含其它类呢?

通过 物的 整体和部分的关系来区分职责

这里将的整体是指事物存在的整体是由部分组成的,如电脑中的各种配件,公司的组织结构。我们会本能的将这些已经形成结构的对象分类。因为在现实存在的对象当中已经能很好的区分出对象的职责了。
要注意是还要使用关注点分离的技巧,来设定我们关注物的最小粒度,不要过度拆分。

通过 事的 过程中的控制关系来区分职责

拿洗衣服这件事来说:参与的对象有人、洗衣机、甩干机、烘干机、衣物。洗衣服这件事是一个目标导向的过程,目的是洗干净衣服。那么就会有衣物→洗衣机→甩干机→烘干机 这样的过程。
过程中的节点就是职责,完成这个职责的对象就是我们要抽象出的类。

通过 事的 记录组成关系来区分职责

拿单据这件事来说。单据是一个过程的记录(最终会走向一个过程的结果)。这个记录中有什么样的信息组成。这些信息对象就是我们要抽象出的类。
例如:采购入库单。有货品信息(包含采购单价、数量、金额)、供应商信息、负责人信息、时间信息。

物会变事也会变

软件并非一成不变的。当需求变更时,原来的事物就并非我们所定义的事物了。所以到那个时候我们就要重构使之符合单一职责的设计原则。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值