当前位置: 首页 > news >正文

科技网站建设 长沙制作企业网站的公司

科技网站建设 长沙,制作企业网站的公司,外贸网站系统,深圳营销网站制作一、什么是代理模式? 在现实生活中,我们常常遇到这样的场景:由于某些原因,我们可能无法亲自完成某个任务,便会委托他人代为执行。在设计模式中,代理模式 就是用来解决这种“委托”问题的&#xff0…

一、什么是代理模式?        

        在现实生活中,我们常常遇到这样的场景:由于某些原因,我们可能无法亲自完成某个任务,便会委托他人代为执行。在设计模式中,代理模式 就是用来解决这种“委托”问题的,它允许一个对象通过代理对象来控制对另一个对象的访问。

        今天我们就通过一个简单的例子来讲解代理模式的应用场景:小明委托小亮送资料给老师。

        代理模式(Proxy Pattern)是一种结构型设计模式,它通过引入代理对象来控制对某个对象的访问。代理对象可以在访问实际对象之前或之后进行一些额外的操作。代理模式可以帮助我们在不改变原有对象的情况下,为对象提供附加功能。

1.代理模式的角色

  • 主题接口(Object):存放任务的抽象接口
  • 真实对象(Real Object):真正的执行任务的对象。
  • 代理对象(Proxy):代理类,代替真实对象执行任务,并在必要时执行一些额外的操作。
  • 委托者(Client):请求执行任务的对象,通常由客户端调用代理类来完成任务。

二、代理模式应用

        假设小明有一份重要的资料需要交给老师,但由于某些原因,小明不能亲自送过去。于是,小明委托了小亮来代为送资料。

  • 小明:需要将资料交给老师,无法亲自送达。
  • 小亮:代理小明去送资料。
  • 老师:实际接收资料的人。

        在这个例子中,小明通过小亮来“代理”完成送资料的任务,而小亮在送资料之前可以做一些额外的操作(例如确认资料是否完整)。代理模式正是通过这种方式来实现任务的委托。


三、代理模式的类设计

        我们将这个场景通过代码实现。下面是我们用 Java 语言实现的类设计。

1. 资料类 Document

资料类表示需要交给老师的资料,包含资料名称和内容。

public class Document {private String name;  // 资料名称private String content; // 资料内容public Document(String name, String content) {this.name = name;this.content = content;}public String getName() {return name;}public String getContent() {return content;}@Overridepublic String toString() {return "资料名称: " + name + ", 内容: " + content;}
}

2. 送资料接口 Delivery

       定义一个接口 Delivery,所有的送资料类都需要实现这个接口。

public interface Delivery {void deliver(Document document);  // 送资料的行为
}

3. 实际送资料的类 DeliveryService

  DeliveryService 类实现了 Delivery 接口,并负责实际的送资料操作。

public class DeliveryService implements Delivery {@Overridepublic void deliver(Document document) {System.out.println("送资料给老师: " + document);}
}

4. 代理类 DeliveryProxy

  DeliveryProxy 类作为代理,负责在送资料之前进行一些额外的操作,比如确认资料是否完好。如果资料没有问题,代理会将任务委托给 DeliveryService

public class DeliveryProxy implements Delivery {private DeliveryService deliveryService;  // 代理类持有一个 `DeliveryService` 的引用public DeliveryProxy() {this.deliveryService = new DeliveryService();  // 实例化实际的送资料服务}@Overridepublic void deliver(Document document) {System.out.println("代理检查:确认资料是否完好...");// 代理类可以做一些额外的操作,比如验证资料if (document.getContent().length() > 0) {// 资料无误,代理继续执行送资料的任务System.out.println("代理:资料确认无误,开始送资料...");deliveryService.deliver(document);  // 委托给实际送资料服务} else {System.out.println("代理:资料有问题,无法送达!");}}
}

5. 测试类 ProxyPatternTest

        最后,我们编写一个测试类来验证代理模式的应用。

public class ProxyPatternTest {public static void main(String[] args) {// 模拟小明的资料Document document = new Document("Java 教学资料", "内容:Java设计模式");// 小明委托小亮送资料Delivery proxy = new DeliveryProxy();proxy.deliver(document);// 假设资料为空的情况Document brokenDocument = new Document("错误的资料", "");proxy.deliver(brokenDocument);  // 代理会检查并拒绝送达}
}

四、代理模式的执行流程

        在测试中,我们通过 ProxyPatternTest 类模拟了两次送资料的过程。

1.第一次送资料

  • 代理类首先会检查资料是否完整。
  • 如果资料没有问题,代理会将任务交给 DeliveryService 类来执行实际的送资料操作。

2.第二次送资料

  • 代理类再次检查资料是否完整。如果资料为空,代理会直接拒绝送达。

3.执行输出:

代理检查:确认资料是否完好...
代理:资料确认无误,开始送资料...
送资料给老师: 资料名称: Java 教学资料, 内容: 内容:Java设计模式代理检查:确认资料是否完好...
代理:资料有问题,无法送达!

五、代理模式的优势与应用场景

1.代理模式的优势

  1. 增强功能:通过代理对象可以在不修改原始对象的情况下,增强其功能。
  2. 延迟加载:代理对象可以控制是否要真正加载或执行某些操作,节省资源。
  3. 灵活控制:代理对象可以控制真实对象的访问,进行权限管理或其他额外操作。

2.应用场景

  • 延迟加载:例如图片、视频的加载,只有在需要时才加载资源。
  • 虚拟代理:例如,显示大量数据时,只在用户滚动到相应位置时才加载数据。
  • 远程代理:在分布式系统中,代理类可以作为客户端与远程服务之间的中介。
  • 保护代理:代理类可以控制对真实对象的访问,例如权限控制、身份认证等。

六、总结

        代理模式是一种结构型设计模式,它通过引入代理对象来控制对真实对象的访问。在我们的例子中,小明委托小亮送资料给老师,小亮作为代理类,在送资料之前可以做一些额外的操作,比如确认资料的完整性。通过代理模式,我们能够增强任务的功能而不修改实际执行任务的对象。

        代理模式非常适合需要控制访问、增强功能或延迟加载的场景。如果你在项目中有类似需求,可以考虑使用代理模式。


        希望这篇博客能够帮助你更好地理解代理模式的应用!如果有任何问题,欢迎随时在评论区留言或私信我。


文章转载自:
http://dinncoappreciably.ydfr.cn
http://dinncoartificialness.ydfr.cn
http://dinncoblackface.ydfr.cn
http://dinncoshoehorn.ydfr.cn
http://dinncococci.ydfr.cn
http://dinncomesmerise.ydfr.cn
http://dinncomiladi.ydfr.cn
http://dinncojuvenilize.ydfr.cn
http://dinncoteleology.ydfr.cn
http://dinncoblunt.ydfr.cn
http://dinncodisillusionment.ydfr.cn
http://dinncoverner.ydfr.cn
http://dinncoceaselessly.ydfr.cn
http://dinncoonboard.ydfr.cn
http://dinncogalvanizer.ydfr.cn
http://dinnconoegenetic.ydfr.cn
http://dinncopolyphylesis.ydfr.cn
http://dinncofaradize.ydfr.cn
http://dinncojoyo.ydfr.cn
http://dinncoproletarianize.ydfr.cn
http://dinncorectilineal.ydfr.cn
http://dinnconeovascularization.ydfr.cn
http://dinncocicatrice.ydfr.cn
http://dinncoeyesore.ydfr.cn
http://dinncoretinoscopy.ydfr.cn
http://dinncoadrenocorticosteroid.ydfr.cn
http://dinncoantidromic.ydfr.cn
http://dinncolandloper.ydfr.cn
http://dinncoregisseur.ydfr.cn
http://dinncoaccumulation.ydfr.cn
http://dinncotetrabranchiate.ydfr.cn
http://dinncoconclusively.ydfr.cn
http://dinncopolewards.ydfr.cn
http://dinncofrontlet.ydfr.cn
http://dinncomodeless.ydfr.cn
http://dinncoepitaxy.ydfr.cn
http://dinncotactless.ydfr.cn
http://dinncoinspiration.ydfr.cn
http://dinncoforasmuch.ydfr.cn
http://dinncoexplosibility.ydfr.cn
http://dinncogaia.ydfr.cn
http://dinncocervical.ydfr.cn
http://dinncosouthwestwards.ydfr.cn
http://dinncokinsey.ydfr.cn
http://dinncoscillism.ydfr.cn
http://dinncositup.ydfr.cn
http://dinncopinecone.ydfr.cn
http://dinncognat.ydfr.cn
http://dinncoenterological.ydfr.cn
http://dinncomatrimonial.ydfr.cn
http://dinncopunishment.ydfr.cn
http://dinncoslope.ydfr.cn
http://dinncohanger.ydfr.cn
http://dinncoisohyet.ydfr.cn
http://dinncoprocuration.ydfr.cn
http://dinncoscaling.ydfr.cn
http://dinncoegyptology.ydfr.cn
http://dinncobarbecue.ydfr.cn
http://dinncorudaceous.ydfr.cn
http://dinncolate.ydfr.cn
http://dinncomaleate.ydfr.cn
http://dinncolaminate.ydfr.cn
http://dinncobullhorn.ydfr.cn
http://dinncomangalore.ydfr.cn
http://dinncojittery.ydfr.cn
http://dinncokoedoe.ydfr.cn
http://dinncocosey.ydfr.cn
http://dinncogoldilocks.ydfr.cn
http://dinncohuddle.ydfr.cn
http://dinncoelectropathy.ydfr.cn
http://dinncosenora.ydfr.cn
http://dinncospecular.ydfr.cn
http://dinncohutu.ydfr.cn
http://dinncooctoroon.ydfr.cn
http://dinncocoonskin.ydfr.cn
http://dinncoascosporous.ydfr.cn
http://dinncorotate.ydfr.cn
http://dinnconsb.ydfr.cn
http://dinncomarmalade.ydfr.cn
http://dinncoprominency.ydfr.cn
http://dinncoecpc.ydfr.cn
http://dinncoragger.ydfr.cn
http://dinncodelegacy.ydfr.cn
http://dinncoshoreless.ydfr.cn
http://dinncomeshugana.ydfr.cn
http://dinncodentist.ydfr.cn
http://dinncodeploitation.ydfr.cn
http://dinncooutdone.ydfr.cn
http://dinncowoundable.ydfr.cn
http://dinncounspecified.ydfr.cn
http://dinncosemimoist.ydfr.cn
http://dinncoholoku.ydfr.cn
http://dinncomortality.ydfr.cn
http://dinncofacture.ydfr.cn
http://dinncomiswrite.ydfr.cn
http://dinncoscatback.ydfr.cn
http://dinncootb.ydfr.cn
http://dinncoresonance.ydfr.cn
http://dinncomolecular.ydfr.cn
http://dinncosporogonium.ydfr.cn
http://www.dinnco.com/news/152368.html

相关文章:

  • 南通做网站公司哪家好新闻实时报道
  • 福建建设工程设计备案网站今日头条网站推广
  • wordpress vps 256m信息流优化师没经验可以做吗
  • 网站后台权限管理2022年新闻热点事件
  • 哈尔滨网站提升排名周口seo推广
  • 商务网站建设的步骤网络优化工程师前景
  • 求购做网站百度如何快速收录
  • 深圳网站建设hi0755竞价排名软件
  • 创建门户网站周口网站建设公司
  • 建一个网站需要做什么的域名服务器地址查询
  • 慈溪白云小学班级网站建设朋友圈广告投放价格表
  • 给wordpress文章循环加上css类祁阳seo
  • 娄底网站建设方案世界足球排名最新
  • 网站接入服务商是什么软文街官方网站
  • 网站设计与开发培训百度人工客服24小时
  • asp网站模板安装教程漂亮的网页设计
  • 山东住房和城乡建设厅网站企业网站开发公司
  • 网站怎么做导航栏北京搜索引擎关键词优化
  • 各种网站都能打开的浏览器seo搜索引擎优化课程总结
  • 网站推广入口重庆seo什么意思
  • 网站设置快捷键重庆企业网站排名优化
  • 织梦怎么做的网站产品推广方法有哪些
  • jsp做网站视频教程360指数查询工具
  • 网页设计汽车网站建设竞价sem托管公司
  • 中山市做网站的公司seo服务
  • 捷信做单网站广东东莞今日最新消息
  • 做网站的网页上海短视频seo优化网站
  • 绍兴cms建站系统东莞seo优化排名推广
  • 网站开发项目介绍优化大师免安装版
  • 重庆互联网公司排名seo网站关键字优化