代理模式之静态代理

代理模式

为什么要学习代理模式:代理模式是SpringAOP的底层

分类:动态代理和静态代理

你和中介都实现了找房子的接口,但是中介找房子的功能比你强,所以你将找房子的需求交给了中介来做

静态代理

角色分析:

  • 抽象角色:一般使用接口和抽象类来解决
  • 真实角色(房东):被代理的角色
  • 代理角色(中介):代理真实角色,代理真实角色后,我们一般会做一些附属操作
  • 客户(租房的人):访问代理对象的人

还不理解?上代码!

1.抽象角色(接口)

public interface Host {
	public void rent();
}

2.真实角色(房东)

public class HostMaster implements Host{	
    
	public void rent() {
		System.out.println("房东要出租房子");
	}
}

3.代理角色(中介)

public class Proxy {

	public Host host;
	
	public Proxy() {
		
	}
	
	public Proxy(Host host) {
		super();
		this.host = host;
	}
	
	public void rent() {
		seeHouse();
		host.rent();
		fee();
		sign();
	}
	//看房
	public void seeHouse() {
		System.out.println("看房子");
	}
	//收费
	public void fee() {
		System.out.println("收中介费");
	}
	//合同
	public void sign() {
		System.out.println("签合同");
	}		
}

4.客户访问代理角色

import com.xy.pojo.Host;
import com.xy.pojo.HostMaster;
import com.xy.pojo.Proxy;

public class client {

	public static void main(String[] args) {
		//房东要出租房子
		Host host = new HostMaster();
		//中介帮房东出租房子,但也收取一定费用(增加一些房东不做的操作)
		Proxy proxy = new Proxy(host);
		//看不到房东,但通过代理,还是租到了房子
		proxy.rent();
		
	}
}
image-20220613210016707
posted @   无关风月7707  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示