代理模式(Proxy Parttern) 为一个对象提供一个替身,来控制这个对象的访问,即通过代理对象来访问目标对象,这样做的话好处是可以在目标对象实现的基础上,进行额外的功能的扩展。
苹果公司通过苹果代理商来卖手机
定义抽象接口类,该类在代理模式中扮演的是一个抽象功能的角色,该案例中就是把出售手机抽象为了一个接口
/**
* 售卖手机的接口(代理模式——抽象角色)
* @author:liyajie
* @createTime:2022/2/22 14:42
* @version:1.0
*/
public interface IPhone {
/**
* 出售手机
* @author: liyajie
* @date: 2022/2/22 14:44
* @param
* @return void
* @exception:
* @update:
* @updatePerson:
**/
void sellPhone();
}
定义苹果手机公司类,该类在代理模式中扮演的是一个目标角色,实现了IPhone接口,重写出售手机的方法
/**
* 苹果公司(代理模式——目标角色)
* @author:liyajie
* @createTime:2022/2/22 14:46
* @version:1.0
*/
public class TargetPhone implements IPhone {
@Override
public void sellPhone() {
System.out.println("苹果公司正在出售手机");
}
}
定义代理类,通过代理类进而调用目标类的出售手机的方法,并加上自己的扩展功能
/**
* 代理商(代理模式——代理角色)
* @author:liyajie
* @createTime:2022/2/22 14:50
* @version:1.0
*/
public class ProxyPhone implements IPhone {
private IPhone iPhone;
public ProxyPhone(IPhone iPhone){
this.iPhone = iPhone;
}
@Override
public void sellPhone() {
System.out.println("代理商正在循环播放广告,赚取广告商广告费");
System.out.println("代理商正在推荐自己的电子周边产品,赚取费用");
iPhone.sellPhone();
System.out.println("代理商正在卖出苹果手机,赚取差价");
}
}
代理商赚钱的奥秘尽在下图红框中,卖出了苹果手机赚钱,卖出了其他东西赚钱,广告费也赚钱
定义测试类
/**
* 测试类
* @author:liyajie
* @createTime:2022/2/22 14:55
* @version:1.0
*/
public class Test {
public static void main(String[] args) {
TargetPhone targetPhone = new TargetPhone();
ProxyPhone proxyPhone = new ProxyPhone(targetPhone);
proxyPhone.sellPhone();
}
}
查看结果
该方案采用了静态代理的方式:
优势:可以在不改变目标对象功能的前提下,通过代理对象对目标对象功能进行扩展劣势:不利于程序的扩展,需要同时维护目标对象和代理对象,程序中会产生大量的代理类,维护成本高该篇文章我们分享了静态代理的模式,下篇内容,我们分析动态代理的模式
如需获取源码,请关注后,私信发送"源码"给小编,非常感谢
版权声明:我们致力于保护作者版权,注重分享,被刊用文章【代理是怎么赚钱的(代码思维教你代理商为何是一种赚钱的模式)】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;
工作时间:8:00-18:00
客服电话
电子邮件
beimuxi@protonmail.com
扫码二维码
获取最新动态
