设计模式之代理设计模式

原创
2017/05/03 22:39
阅读数 46

代理设计模式的核心思想就是创建一个目标类的代理对象,这个对象和目标对象一样实现了同一个接口,并且代理对象是持有这个目标对象的引用,可以在执行目标对象的方法前后对其进行控制。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方法却是由目标类进行执行的,只不过是由代理类去调用的。如果经纪人价格没谈好,那么目标对象的方法也不会执行了,对目标方法进行了控制。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部