网站建设需要材料,开发游戏用什么编程软件,wordpress页面移动端,wordpress插件如何开发简介 为其他对象提供⼀种代理以控制对这个对象的访问#xff0c;属于结构型模式。客户端并不直接调⽤实际的对象#xff0c;⽽是通过调⽤代理#xff0c;来间接的调⽤实际的对象应用场景 各⼤数码专营店#xff0c;代理⼚商进⾏销售对应的产品#xff0c;代理商持有真正的…简介 为其他对象提供⼀种代理以控制对这个对象的访问属于结构型模式。客户端并不直接调⽤实际的对象⽽是通过调⽤代理来间接的调⽤实际的对象应用场景 各⼤数码专营店代理⼚商进⾏销售对应的产品代理商持有真正的授权代理书客户端不想直接访问实际的对象或者访问实际的对象存在困难通过⼀个代理对象来完成间接的访问想在访问⼀个类时做⼀些控制或者增强功能角色
Subject 抽象接⼝,真实对象和代理对象都要实现的⼀个抽象接⼝好⽐销售数码产品Proxy 包含了对真实对象的引⽤,从⽽可以随意的操作真实对象的⽅法好⽐ 代理加盟店RealProject 真实对象好⽐⼚商销售数码产品案例demo
xxxx想卖手机为以后退休⽣活做准备代理各⼤⼚商的⼿机和电脑⽤代理设计模式帮他实现下 Subject 卖⼿机RealProject 苹果、华为⼚商核⼼是卖⼿机但是选址不熟悉Proxy ⽼王数码专卖店代理卖⼿机附加选地址增加⼴告等抽取公共接口
/*** 抽取公共的方法*/
public interface DigitalSell {void sell();
}真实对象
/*** 真实对象**/public class DigitalSellReal implements DigitalSell{Overridepublic void sell() {System.out.println(销售华为手机);}
}代理对象
/*** 代理对象增加了功能**/public class DigitalSellProxy implements DigitalSell {private DigitalSell realObj new DigitalSellReal();Overridepublic void sell() {makeAddress();realObj.sell();makeAD();}private void makeAddress(){System.out.println(一个人流量很高的地址);}private void makeAD(){System.out.println(投放广告);}}测试
public class Main {public static void main(String[] args) {//真实对象的行为DigitalSell realObj new DigitalSellReal();realObj.sell();System.out.println();//代理对象的行为DigitalSell proxy new DigitalSellProxy();proxy.sell();}
}结果
销售华为手机一个人流量很高的地址
销售华为手机
投放广告优缺点
优点 可以在访问⼀个类时做⼀些控制或增加功能操作代理类⽆须修改原本的源代码符合开闭原则系统具有较好的灵活性和可扩展性缺点 增加系统复杂性和调⽤链路与动态代理区别 动态代理也有多种⽅式cglib、jdk和装饰器模式的区别 保护⽬标对象增强⽬标对象和装饰模式类似了