重构14-Break Responsibilities
2016-08-19 09:31
260 查看
把一个类的多个职责进行拆分,这贯彻了SOLID中的单一职责原则(SRP)。尽管对于如何划分“职责”经常存在争论,但应用这项重构还是十分简单的。我这里并不会回答划分职责的问题,只是演示一个结构清晰的示例,将类划分为多个负责具体职责的类。
如你所见,Video类包含两个职责,一个负责处理录像租赁,另一个负责管理管理用户的租赁总数。要分离
职责,我们可以将用户的逻辑转移到用户类中。
来自为知笔记(Wiz)
public class Video { public void PayFee(Double fee) { } public void RentVideo(Video video, Customer customer) { customer.Videos.add(video); } public Double CalculateBalance(Customer customer) { return customer.sum(customer.LateFees); } } public class Customer { public List<Double> LateFees; public List<Video> Videos; double sum(List<Double> LateFees){ double sum=0d; for (Double d:LateFees){ sum=+d; } return sum; } }
如你所见,Video类包含两个职责,一个负责处理录像租赁,另一个负责管理管理用户的租赁总数。要分离
职责,我们可以将用户的逻辑转移到用户类中。
public class Video { public void RentVideo(Video video, Customer customer) { customer.Videos.add(video); } } public class Customer { public List<Double> LateFees; public List<Video> Videos; public void PayFee(Double fee){} public Double CalculateBalance(Customer customer) { return sum(customer.LateFees); } double sum(List<Double> LateFees) { double sum = 0d; for (Double d : LateFees) { sum = +d; } return sum; } }
来自为知笔记(Wiz)
相关文章推荐
- 重构13-Extract Method Object(提取方法对象)
- 重构12-Break Dependencies(打破依赖)
- JSPatch实现原理
- 《Motion Design for iOS》(四十六(最终章))
- XML 读取
- 重构11-Switch to Strategy(Switch到策略模式)
- 重构10-Extract Method(提取方法)
- Android与单片机通信常用数据转换方法(汇总)
- 关于Drawable转Bitmap的错误,为0的处理办法
- JS获取当前页面名称的简单实例
- Java:将字符串中的数字转换成整型
- 注释掉打开热点的提示框
- 【笔试】下厨房
- 网络访问框架源码分析--待完善
- mysql性能优化
- Java:将字符串中的数字转换成整型
- Java:将字符串中的数字转换成整型
- NetSnmp配置
- 重构9-Extract Interface(提取接口)
- 如何查看谷歌卫星地图每级分辨率的两种方法