Spring静态代理
来源:互联网 发布:linux如何修改用户组 编辑:程序博客网 时间:2024/06/05 06:00
1. 静态代理
代理:为某个对象提供一个代理,以控制对这个对象的访问。代理类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以使用代理对象代替。
静态代理:所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。
静态代理的角色分析:
抽象角色----一般使用接口或者抽象类来实现。房屋出租的接口Rent!
真实角色----被代理的角色房东Host!
代理角色----代理真实角色—代理真实角色后一般会做一些附属操作。中介代理,收中介费,看房等。
客户 ----使用代理角色来进行一些操作:Client测试类。
老师找对象:
抽象角色:---找对象这个接口!
真实角色:---老师
代理角色---婚介:百合,非诚勿扰
客户---女对象!
案例驱动:学生租房子
抽象角色:创建一个租房接口Rent
真实角色:房东Host类。
代理角色:中介Proxy类。
客户:client类。
好处:
1、 使得真实角色处理的业务更加纯粹,不再去关注一些公共的事情。
2、 公共的业务由代理来完成----实现业务的分工
3、 公共业务发生扩展时变得更加集中和方便
缺点:
1、 类多了---代理类就随着增多。工作量变大了。开发效率降低了。
public interface Rent {
/**
*
* @Description:租房
* @authormengqx
* @date 2017年7月10日
*/
void rent();
}
public class Host implements Rent{
@Override
public void rent() {
System.out.println("房东老大爷来了!开始租房了!");
}
}
public class UserProxy implements Rent {
private Hosthost;
public Host getHost() {
returnhost;
}
public void setHost(Host host) {
this.host =host;
}
@Override
public void rent() {
// 先看房!
seeHose();
// 单纯的代表房东去租房屋
host.rent();
// 付款
pay();
// 收取网费
netpay();
// 增加房租
addPay();
}
// 看房
public void seeHose(){
System.out.println("黑心中介先带你看房!假好心!");
}
// 给钱
public void pay(){
System.out.println("真实的面目露出来了!来先签三年的合同!然后在押一付三!还要交一年卫生费!");
}
// 收取网费
public void netpay(){
System.out.println("收取网费");
}
//
public void addPay(){
System.out.println("加钱!");
}
}
public class Test {
public static void main(String[] args) {
// 测试静态代理开始租房
UserProxy up = new UserProxy();
// 该中介代理那个对象?
up.setHost(new Host());
// 开始租房
up.rent();
}
}
- 【spring】静态代理&&动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- Spring静态代理
- spring+静态代理
- Spring静态代理
- 【Spring】静态代理
- Spring 代理中的静态代理、动态代理
- spring 代理(静态代理&动态代理&cglib代理)
- Spring AOP(1),静态代理
- 【spring 3】AOP:静态代理
- Spring(AOP静态代理)
- Spring点点滴滴之静态代理
- Spring的静态代理和动态代理
- Spring AOP 静态代理与动态代理
- Spring的静态代理和动态代理
- 后缀表达式
- 浅谈Redis---(2)
- Android Studio live template巧用动态模板也能大大提高你的开发效率
- 关于MySQL 触发器的使用
- 【theano-windows】学习笔记七——logistic回归
- Spring静态代理
- 入职自我介绍
- 选择排序、快速排序、冒泡排序、插入排序
- 如何选择compileSdkVersion, minSdkVersion 和 targetSdkVersion
- CSS3 background-size 属性
- Hibernate初学者---关于annotation注解的相关知识
- 【JAVA300】51-55 笔记
- Python 多线层协调应用举例
- Python实现KNN算法