Spring点点滴滴之静态代理
发布日期:2021-06-29 01:16:35
浏览次数:2
分类:技术文章
本文共 1954 字,大约阅读时间需要 6 分钟。
最近学习了静态代理,首先举个例子,就是租房子的例子。在这里有房东,中介,和我(租房子的)。这里房东将房子委托给中介,中介带这我去看房子,房子满意房东将房子租给我,我把中介费给中介。这就是一个静态代理的过程。中介代理了租房子的过程,而且在这个过程中加入了自己的一些业务(带人看房子,收中介费)。
简单的用例图就是这样的 下面就是一些简单的代码:public interface userService { public void add(); public void delete(); public void update(); public void search();}
这个就是一个公共的借口。
public class userServiceImpl implements userService{ @Override public void add() { // TODO Auto-generated method stub System.out.println("添加用户"); } @Override public void delete() { // TODO Auto-generated method stub System.out.println("删除用户"); } @Override public void update() { // TODO Auto-generated method stub System.out.println("更新用户"); } @Override public void search() { // TODO Auto-generated method stub System.out.println("搜索用户"); }}
这个类实现了userService借口。
但是我想调用这个类输出的时候调用每个方法都要输出日志,如果在方法中直接加上像这样public void logs(String userName) { System.out.println("执行日志"+userName); }
在类的最后加上这个方法,之后在每个add这样的方法中调用logs这个方法,这样是很麻烦的。这时我么就用到了静态代理。
public class userServiceProxy implements userService{ private userService users; @Override public void add() { // TODO Auto-generated method stub logs("add"); users.add(); } @Override public void delete() { // TODO Auto-generated method stub logs("delete"); users.delete(); } @Override public void update() { // TODO Auto-generated method stub logs("update"); users.update(); } @Override public void search() { // TODO Auto-generated method stub logs("search"); users.search(); } public void logs(String userName) { System.out.println("执行日志"+userName); }}
这样userServiceImpl只要专注业务的实现就行了,其他的一些公用方法放在代理类中实现。、
使用静态代理的优点: 1.是真实角色处理业务更加纯粹(真实角色就是userServiceImpl),不再去关注一些公共的事情,公共的业务有代理类来完成————–实现业务的分工。 2公共业务发生扩展时变得更加集中和方便。 缺点: 1类变多了–多了一个代理类,工作量变大了,工作效率变低了。转载地址:https://blog.csdn.net/ys3198/article/details/53383915 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月05日 23时42分24秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
打破职能之缺陷预防之路
2019-04-29
mac开启mysql,重置mysql密码,允许远程连接
2019-04-29
安装kibana
2019-04-29
linux安装nodejs
2019-04-29
tomcat部署vue,spring项目
2019-04-29
idea2020打包war包
2019-04-29
测试框架
2019-04-29
解决切换分支时,maven不自动下载依赖的问题
2019-04-29
java正则
2019-04-29
ios app开发环境配置方法总结
2019-04-29
app界面设计规范及缺陷
2019-04-29
TV App的设计借鉴游戏界面设计技巧
2019-04-29
短视频APP开发对影视行业有哪些影响?
2019-04-29
如何解决APP应用反应速度缓慢问题?
2019-04-29
APP开发失败的原因有哪些?
2019-04-29
解决软件开发中常见的问题
2019-04-29
在2021年, Python是否会全面超越 Java?
2019-04-29
程序员编程入门一定知道!程序员需要学什么?
2019-04-29
运动APP软件开发具有什么好处?
2019-04-29
APP开发应该注意什么?如何切换模拟数据和真实数据?
2019-04-29