重构 — 改善既有的类图设计 条款7:为每个角色增加一个接口

重构 — 改善既有的类图设计
条款7:为每个角色增加一个接口

黄国强 2008/6/6

        单一职责原则(Single Responsibility Principle,SRP)[1] Robert C. Martin 是这样解释的:Each class should have one and only one reason to change.一个类只能因为一个因素而改变。
        从上面所述可以看出,单一职责是针对一个类的。但是我这里有个不同观点,即,单一职责是针对接口的。现实的例子,是我们每个人都承担了太多的职责,这是客观存在的。每个人只承担一个职责,这是理想状态,非常少见。请看图 1 。
图 1
        图中类4被类1、2、3调用。承担了为三种不同类型的类服务的职责。根据单一职责原理,重构如图2 。
图 2
        图2 中我增加了接口1、2、3,而原先的类4从这三个接口中继承。重构后带来了一个好处,即将类4和类1、2、3解耦。未来,如果需求发生变化,觉得类4过于庞大和复杂,可以将类4重写或分拆。而类1、2、3对此将一无所知。
        现实的例子,比如一个小公司,仅老板一个人,他需要承担从总经理到员工所有的职位的职责。面对不同的客户,他拿出不同职位的名片。随着公司的发展,他会按 职位招聘一些符合这些职位的人。让这些人分担他的职责。在这里。老板就是图1的类4,而总经理职位、部门经理职位、员工职位等就是接口1、2、3。


[1] 敏捷软件开发:原则、模式与实践 英文原名 Agile Software Development: Principles, Patterns, and Practices
作者      : Robert C.Martin
清华大学出版社 | 出版日期 : 2003 年 9 月
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

acloud_csu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值