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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Spring的点点滴滴之动态代理
下一篇:Spring的点点滴滴之依赖注入

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月05日 23时42分24秒