Java代理模式之蔡徐坤老师加深你的理解

代理模式

原始定义:Proxy pattern provides a surrogate or placeholder for another object in order to controll access to it
宁看懂了吗?
翻译:代理模式就是给某一个对象(被代理对象proxyee)提供一个“替身”或者“占位符”来达到控制这个对象的目的。
我注:也就是说,相比于之前我们直接操作这个对象(proxyee),我们通过操作代理对象(proxyer)来间接的操作proxyee。 这下懂了吧亲?

静态代理

从字面理解,就是有另一个人代替了你去做了本来你应该做的事情(在代码中其实还是你自己做的,这里先不管具体谁做的)。
静态代理模式的优点

  • 在不改变原有代码的前提下增加功能
  • 帮助你理解AOP
    静态代理模式的缺点
  • 代理类必须实现被代理类实现的接口,一旦被代理类的功能增加,会牵扯到代理类的代码。

这里用一个例子来解释静态代理的流程和代码。
我们假设你是蔡徐坤的经纪人,蔡徐坤自己跳舞是赚不到钱的,只有你接到业务让他跳舞他才有收入。
首先我们先创建一个功能接口叫做(如果对这里为什么要使用interface而不是class有疑问,这里是java编程的惯例,一般来讲,功能使用接口,实体使用类)


public interface talent{
	void dance();
	void sing();
}

然后我们创建出蔡徐坤,并且实现了他的天赋(talent 接口)


public class CaiXuKun implements talent{
	@override
	public void dance(){
		system.out.println("我是来自美国校队的拉拉队队长,跳麻溜的");
	}
	@override 
	public void sing(){
		system.out.println("鸡你太美");
	}

}

然后我们让蔡徐坤自己表演下才艺(单独运行下他的方法)

public class TestCaixukun {
    public static void main(String[] args) {
        CaiXuKun caiXuKun = new CaiXuKun();
        caiXuKun.sing();
        caiXuKun.dance();
    }

在这里插入图片描述
然后发现他没有收到钱!!!!!

现在的重点来了,我们要使用经纪人来代理业务了,创建一个代理对象就叫做ProxyManager吧

public class ProxyManager implements talent{
    CaiXuKun target; //这里我们需要一个CaiXuKun的实例来保证还是caixukun本人在跳舞!!!!

    public void setTarget(CaiXuKun target) { 
        this.target = target;
    }

    @Override
    public void dance() {
        System.out.println("跳舞收费五十块 ,请交钱!");//这里就是我们添加的功能了!!!并且我们没有动CaiXuKun的代码!
        target.dance();
    }

    @Override
    public void sing() {
        System.out.println("蔡徐坤唱歌收费五十块,请交钱!!!");//这里就是我们添加的功能了!!!并且我们没有动CaiXuKun的代码!
        target.sing();
    }
}

在这里使用代理类运行一下
public class TestCaixukun {
    public static void main(String[] args) {
        ProxyManager proxyManager = new ProxyManager();
        CaiXuKun caiXuKun = new CaiXuKun();
        proxyManager.setTarget(caiXuKun);
        proxyManager.dance();
        proxyManager.sing();
    }
}

在这里插入图片描述

我们就成功了增加了功能了!!!! 你看懂了吗!!!
现在你回头看上面 代理模式的优点,映象应该会深刻和具体一点

动态代理 ()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值