GOF23设计模式01之静态代理模式

前言:
什么是代理模式?代理顾名思义就是帮别人做事情,那么代理模式也是一样的,不直接暴露真实的对象给调用者,而是通过代理的对象去调用。那么这样有什么作用呢?我们可以先写一个静态代理模式来看看。

1.我们先创建一个Girl接口:

package com.wei;

public interface Girl {
	void sing();
}

2.然后我们创建一个RealGirl去实现这个接口:

package com.wei;

public class RealGirl implements Girl {
	@Override
	public void sing() {
		System.out.println("RealGirl开始唱歌。。。");		
	}
}

3.接下来我们就可以创建一个经纪人Agent去代理:

package com.wei;

public class Agent implements Girl{
	
	private RealGirl realGirl;
	public Agent(RealGirl realGirl) {   //传入对象
		this.realGirl = realGirl;
	}	
	@Override
	public void sing() {
		realGirl.sing();     //调用realGile的方法
	}
}

4.最后我们可以去创建一个Client去调用代理看看:

package com.wei;

public class Client {
	public static void main(String[] args) {
		RealGirl realGirl = new RealGirl();  //创建RealGile
		Agent agent = new Agent(realGirl);   //创建Agent
		
		agent.sing();  //调用代理Agent的sing方法
	}	
}

5.运行结果:
在这里插入图片描述

  • 当然我们还可以在Client前后加一些方法:
//Cilent.java
package com.wei;

public class Client {
	public static void main(String[] args) {
		RealGirl realGirl = new RealGirl();  //创建RealGile
		Agent agent = new Agent(realGirl);   //创建Agent
		
		
		agent.init();
		agent.sing();  //调用代理Agent的sing方法
		agent.distory();
	}	
}

//Agent.java
package com.wei;

public class Agent implements Girl{
	
	private RealGirl realGirl;
	public Agent(RealGirl realGirl) {   //传入对象
		this.realGirl = realGirl;
	}	
	void init() {
		System.out.println("唱歌开始。。。");
	}
	@Override
	public void sing() {
		realGirl.sing();
	}
	void distory() {
		System.out.println("唱歌结束。。。");
	}
}
  • 然后我们再调用:
    在这里插入图片描述
  • 这样我们就可以对真实的对象前后加上一些增强方法,而不影响到真实的代码。但是这样的话要是一个代理代理很多对象的话代码耦合性不是很高吗,所以我们就需要用到动态代理模式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值