欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java代理模式--重温

程序员文章站 2022-05-07 19:43:48
...

UML类图:

java代理模式--重温

老样子,话不多说,直接上代码

/**
 * 代理类和真实类 抽象接口
 * @author waf
 *
 */
public interface Sell {
	public Integer sell();
}
/**
 * 代理类
 * @author waf
 *
 */
public class Buessnise implements Sell {
	private Framer framer;
	Integer addPrcie=2432;
	public Buessnise(Framer framer){
		this.framer=framer;
	}
	@Override
	public Integer sell() {
		// TODO Auto-generated method stub
		System.out.println("商家加价"+addPrcie+"元");
		return framer.sell()+addPrcie;
	}

}

/**
 * 真实类
 * @author waf
 *
 */
public class Framer implements Sell{
	Integer price=3242;
	@Override
	public Integer sell() {
		// TODO Auto-generated method stub
		System.out.println("农名原价"+price+"元");
		return price;
	}

}
/**
 * 客户测试类
 * @author waf
 *
 */
public class Test {


public static void main(String[] args) {
Sell sell=new Buessnise(new Framer());
System.out.println("客户买进花了"+sell.sell()+"元");
}
}


运行结果:

java代理模式--重温

该设计模式使用场景有以下几点:

第一:远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。

第二:虚拟代理,是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。

第三:安全代理,用来控制真实对象访问时的权限。

第四:智能引用,是指当调用真实对象时,代理处理另外一些事。本文的例子就是采用了这一点。

通过对代理类和真实类共有方法的抽离为公共接口,两者都有其具体实现,唯一不同的是代理类依赖于真实类,初始化时将真实类的应用传入代理类,代理类对其共有方法进行修饰,达到客户对象通过代理对象访问真实对象!