76. 单一职责原则
单一职责原则 好的设计的一个最基本的原则就是: public class Employee { public Money calculatePay() ... public String reportHours() ... public void save() ... } 有些程序员可能认为将这三个函数一起放到同一个类中是再合适不过了的,毕竟类就应该是操作公共变量的函数的集合。但问题是这三个函数是因为完全不同的原因变化。每当计算支付额的业务规则改变时,calculatePay函数会变化。每当有人需要一个不同的报告格式时,reportHours函数会变化。每当DBA改变数据库的模式时,save函数就会变化。这三种变化原因的组合会让Employee变化无常,可能会因为这些原因中的任何一个而改变。更重要的是,任何依赖于Employee的类也会受到这些变化的影响。 public class Employee { public Money calculatePay() ... } public class EmployeeReporter { public String reportHours(Employee e) ... } public class EmployeeRepository { public void save(Employee e) ... } 上面简单的划分就能解决这个问题。每个类都可以放置到它自己的组件中。更确切地说,所有的报告类都可以放到报告组件中,所有的数据库相关类可以放进存储组件,所有的业务规则可以放进业务规则组件中。 原文:The Single Responsibility Principle by Uncle Bob (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |