java代理模式--重温

UML类图:


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

/**
 * 代理类和真实类 抽象接口
 * @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()+"元");
}
}


运行结果:


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

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

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

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

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

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



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值