看【狂神】静态代理后的思路分享
静态代理基础概念
1、代理模式
以生活中的例子举例,分别是租客、房东、中介,在生活中一些找不到租客的房东会将房源信息给到中介公司,租客就可以通过中介获得房源信息。
2、角色分析
抽象角色: 一般使用接口或者抽象类来解决
真实角色(房东):被代理的角色
代理角色(中介):代理真实角色,代理真实角色后,我们一般会做一些附加操作
客户(租客):访问代理对象的人
3、代码部分
1.代码结构部分
抽象角色Rent
真实角色Host
代理角色Proxy
客户Cloent
抽象角色Rent
package com.hxl.demo;
//租房
public interface Rent {
public void rent();
}
真实角色Host
package com.hxl.demo;
//房东
public class Host implements Rent{
@Override
public void rent() {
System.out.println("房东要出租的房子");
}
}
代理角色Proxy
package com.hxl.demo;
//代理
public class Proxy implements Rent{
private Host host;
public Proxy() {
}
public Proxy(Host host) {
this.host = host;
}
public void rent() {
seesHouse();
host.rent();
hetong();
fare();
}
//看房
public void seesHouse(){
System.out.println("看房");
}
//收中介费
public void fare(){
System.out.println("收中介费");
}
//签合同
public void hetong(){
System.out.println("签合同");
}
}
seesHouse();、hetong();、fare();这三个方式就是代理角色的附加操作
package com.hxl.demo;
//客户
public class Client {
public static void main(String[] args) {
// 房东租房子,
Host host = new Host();
// host.rent();
// 代理,中介帮房东租房子,但是会有附属操作
Proxy proxy = new Proxy(host);
// 你不用面对房东,直接找中介租房即可
proxy.rent();
}
}
创建看好房子的对象,并将对象给到中介,中介就将信息返回给租客
静态代理的优点:
1、可以使真实对象的操作更加纯粹,不用去关注一些公共业务
2、可以将公共业务给到代理角色,实现了业务分工
3、公共业务需要扩展时,方便集中管理
静态代理的缺点:
1、每增加一个真实角色就会产生一个代理角色,代码量增多
以上为狂神的spring中所用的列子,加上一些自己的理解,本人才疏学浅,如果有不对的地方,望各位给予意见,谢谢