代理模式浅析简单代理

  • 什么是代理?

比如A是一个接口,B是被加强对象,C是代理对象
A接口有一个sale()方法,B实现了A接口,C也实现了A接口,C在自己实现的sale()方法里不但执行了B的say()方法也执行了一些自己的程序,这就是代理。
代理分为静态代理和动态代理。

  • 谁代理谁?
    代理对象调用目标对象

卖鱼的(代理对象)不光实现了自己的卖鱼的方法,把鱼厂的卖鱼的方法 也执行了 ,卖鱼的就是代理。

  • 为什么要用代理?
    类的增强可以通过继承来实现,那如果想让某个方法增强呢?这时候就用到代理了。

  • 代码如下:

    1.接口 中有卖鱼的方法

     public interface Isale {
     	public int sale();//接口中卖鱼的方法没有方法体
     }
    

2.目标对象,目标对象实现接口,重写了卖鱼的方法

public class FishFactory implements Isale{
	@Override
	public int sale() {
		return 10;
	}
} 

3.代理对象,卖鱼的人卖鱼

public class FishProxy implements Isale{
	private Isale target;//目标对象
	@Override
	public int sale() {
	   //鱼厂把鱼卖给 卖鱼的
		int money=target.sale();
		System.out.println("办理营业执照");
		System.out.println("办理交税");
		System.out.println("办理房租");
		//卖鱼的加自己成本利润,得出价格
		return money+1000;
	}
	public Isale getTarget() {
		return target;
	}
	public void setTarget(Isale target) {
		this.target = target;
	}
}

4.调用:

public class Test {
	public static void main(String[] args) {
		FishFactory factory=new FishFactory();//目标对象
		FishProxy proxy=new FishProxy();//代理对象
		proxy.setTarget(factory);//将目标对象交给代理对象
		int m=proxy.sale();//代理对象执行方法
		System.out.println("最终的售价是:"+m);
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值