单一职责原则

来源:互联网 发布:数据分析找规律问题 编辑:程序博客网 时间:2024/05/24 04:14

单一职责原则简介

  • 英文名称是Single Responsibility Principle,简称SRP 。
  • 不要存在多于一个导致类变更的原因。

最佳实践

  • 一个普通的系统,肯定会接触到用户,机构,角色管理这些模块,基本上使用都是RBAC模型(Role-Based Access Cotrol),基于角色访问控制,通过分配和取消角色来完成用户的权限授予和取消,使动作主体(用户)与资源的行为(权限)分离,确实是个比较好的解决方法。我们这里讲的是用户管理、修改用户信息、增加机构(一个人属于多个机构)、增加角色等,用户有这么多的信息和行为要维护,我们就把这些写到接口中,都是用户管理类。
public interface IUserInfo {    void setUserID(String userID);    String getUserID();    void setPassword();    String getPassword();    String setUserName(String userName);    String getUserName();    boolean changePassword(String oldPassword);    boolean deleteUser();    void mapUser();    boolean addOrg(int orgID);    boolean addRole(int roleID);}
  • 这个接口明显设计有问题,用户的属性和行为没有分开,严重的错误。设计一团糟糕,应该把用户的信息抽取成一个BO(Business Object,业务对象),把行为抽取成一个Biz(Business Logic,业务逻辑),按照这个思路对类重新设计。
//用户类public interface IUserBO {    void setUserID(String userID);    String getUserID();    void setPassword();    String getPassword();    String setUserName(String userName);    String getUserName();}//业务逻辑类public interface IUserBiz {    boolean changePassword(String oldPassword);    boolean deleteUser();    void mapUser();    boolean addOrg(int orgID);    boolean addRole(int roleID);}
  • 重新拆封成了两个接口,IUserBO负责用户属性,简单地说,IUserBO的职责就是收集和反馈用户信息。IUserBiz负责用户的行为,完成用户的信息的维护和变更。

以上我们把一个接口拆分成了两个动作,就是依赖了单一职责原则,那什么是单一 职责原则?定义如上。

0 0
原创粉丝点击