此时我们需要定义一个用户接口IUserInfo,假如我们将用户管理、修改用户信息、角色管理等信息都封装到这个接口当中。那么此时的接口定义将会如下所示:
public interface IUserInfo {
/**
- 用户属性相关
*/
void setPassword(String password);
String getPassword();
void setUserName(String userName);
String getUserName();
void setAddress(String address);
String getAddress();
/**
- 用户行为相关
*/
boolean changePassword(String oldPassword, String newPassword);
boolean deleteUser(String userId);
boolean addOrg(IUserBo userBo, int orgId);
boolean addRole(IUserBo userBo, int roleId);
}
此时的用户信息维护类图如下所示:
这里有一个非常明显的缺点就是,我们将用户的基本属性处理和用户的行为处理放到了一个接口中维护,这样直接导致将用户的基本属性或者用户的行为发生变更的时候,都会导致我们的IUserInfo接口和UserInfo实现类都会发生改变,这种设计不仅增大了系统的耦合度也给项目维护带来了更高的维护成本,是非常不可取的。
解决办法
我们将IUserInfo接口抽象为两个接口,分别是用户属性相关接口IUserBO,行为相关接口IUserBiz,修改后的代码如下所示:
IUserBO接口定义
/**
-
-
用户属性相关(Business Object)
-
@Author: Liziba
-
@Date: 2021/6/20 11:11
*/
public interface IUserBO {
void setPassword(String password);
String getPassword();
void setUserName(String userName);
String getUserName();
void setAddress(String address);
String getAddress();
}
IUserBiz接口定义
/**
-
-
用户行为相关
-
@Author: Liziba
-
@Date: 2021/6/20 11:26
*/
public interface IUserBiz {
boolean changePassword(String oldPassword, String newPassword);
boolean deleteUser(String userId);
boolean addOrg(int orgId);
boolean addRole(int roleId);
}
IUserInfo接口定义
public interface IUserInfo extends IUserBiz, IUserBO{
/**
- 用户属性相关
*/
void setPassword(String password);
String getPassword();
void setUserName(String userName);
String getUserName();
void setAddress(String address);
String getAddress();
/**
- 用户行为相关
*/
boolean changePassword(String oldPassword, String newPassword);
boolean deleteUser(String userId);
boolean addOrg(int orgId);
boolean addRole(int roleId);
}
此时的用户信息维护类图如下所示:
此时的UserInfo对象,既可以当做IUserBiz对象,也可以当做IUserBO对象,因为UserInfo分别实现了IUserBiz接口和IUserBO接口。此时的IUserBiz接口和IUserBO接口是满足单一职责原则的,因为他们分别负责的是用户属性相关和用户行为相关的职责,并不相互耦合交叉。
修改前和修改后的调用方式
修改前
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
学习视频:
大厂面试真题:
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
lt=“img” style=“zoom: 33%;” />
最后
学习视频:
[外链图片转存中…(img-U60h9zMI-1713554906746)]
大厂面试真题:
[外链图片转存中…(img-RDtSMgBc-1713554906747)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!