设计模式之代理设计模式

代理设计模式的核心思想就是创建一个目标类的代理对象,这个对象和目标对象一样实现了同一个接口,并且代理对象是持有这个目标对象的引用,可以在执行目标对象的方法前后对其进行控制。spring的aop就是一个典型的代理模式。

下面我们通过一段简单的代码来理解一下代理模式

首先定义一个接口:

public interface SuperStar {

	public void action();
}

定义一个接口的实现类,这个实现类就是我们的目标类:

public class RealStar implements SuperStar{

	@Override
	public void action() {
		System.out.println("大明星要开始表演了!!!");
	}
}

定义另一个接口实现类,这个类就是代理类,代理类持有目标对象:

public class Broker implements SuperStar{
	
	private RealStar realStar;
	
	public Broker(){
		this.realStar = new RealStar();
	}

	@Override
	public void action() {
		askPrice();
		realStar.action();
		handleEnd();
	}
	
	private void askPrice(){
		System.out.println("经纪人开始谈出场费");
	}
	
	private void handleEnd(){
		System.out.println("经纪人开始处理收尾工作");
	}

}

测试代码如下:

public class CustomerTest {

	public static void main(String[] args) {
		Broker broker = new Broker();
		broker.action();
	}
}

执行测试代码,得到如下结果:

经纪人开始谈出场费
大明星要开始表演了!!!
经纪人开始处理收尾工作

对于消费者来讲,其实不知道有目标类的存在,因为我们只是和代理类打交道,但是action方法却是由目标类进行执行的,只不过是由代理类去调用的。如果经纪人价格没谈好,那么目标对象的方法也不会执行了,对目标方法进行了控制。

转载于:https://my.oschina.net/u/3441184/blog/891922

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值