Spring点点滴滴之静态代理
来源:互联网 发布:淘宝怎么才能没有同款 编辑:程序博客网 时间:2024/06/05 07:05
最近学习了静态代理,首先举个例子,就是租房子的例子。在这里有房东,中介,和我(租房子的)。这里房东将房子委托给中介,中介带这我去看房子,房子满意房东将房子租给我,我把中介费给中介。这就是一个静态代理的过程。中介代理了租房子的过程,而且在这个过程中加入了自己的一些业务(带人看房子,收中介费)。
简单的用例图就是这样的
下面就是一些简单的代码:
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类变多了–多了一个代理类,工作量变大了,工作效率变低了。
0 0
- Spring点点滴滴之静态代理
- Spring的点点滴滴之动态代理
- Spring AOP 学习之静态代理
- spring-aop入门之静态代理模式
- Spring的点点滴滴之aop
- 【spring】静态代理&&动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- Spring静态代理
- spring+静态代理
- Spring静态代理
- 【Spring】静态代理
- Spring 代理中的静态代理、动态代理
- Spring的点点滴滴之依赖注入
- Java代理之静态代理
- 代理模式之静态代理
- 《outliers》/《异类》读后有所思
- POJ-2342-Anniversary party(树形DP)
- NSGA-II 非支配排序算法
- 项目可行性的研究内容
- Prime Ring Problem
- Spring点点滴滴之静态代理
- Unity中可用Lua版本效率分析比较
- NOIP2016 提高组 题解
- HBuilder 使用教程
- Mybatis3.x与Spring4.x整合
- Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持
- React高级教程(es6)——(1)JSX语法深入理解
- android 内存泄露原因以及排查和解决方案
- ios 弹幕实现及封装