单一职责原则

单一职责原则简介

  • 英文名称是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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值