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

装饰工程网站模板logo设计在线生成免费图片加文字

装饰工程网站模板,logo设计在线生成免费图片加文字,做网站6000左右的电脑,哈尔滨网站如何制作文章目录 简介问题解决方案代码核心设计要点 总结 简介 代理是一种结构型设计模式,让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问,并允许在把请求提交给对象前后进行一些处理。 问题 为什么要控制对于某个对象的访问呢&#xff1f…

文章目录

  • 简介
  • 问题
  • 解决方案
  • 代码
    • 核心设计要点
  • 总结

简介

代理是一种结构型设计模式,让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问,并允许在把请求提交给对象前后进行一些处理。

问题

为什么要控制对于某个对象的访问呢?举个例子:有一个消耗大量系统资源的巨型对象,你只是偶尔需要使用它。
在这里插入图片描述

如上图,数据库连接的初始化和查询可能会非常缓慢,我们可以先实现延迟初始化,只在实际有需要时再创建这个对象。这样对象的所有客户端都要执行延迟初始代码。这很可能会带来很多重复代码。在理想情况下,我们希望把延迟初始化的代码直接放入这个对象的类里,但这并不一定能实现, 因为这个类可能是第三方封闭库的一部分。

解决方案

代理模式建议 新建一个和原来的服务对象接口相同的代理类,然后把代理对象传递给所有原始对象客户端。代理类接收到客户端请求后会创建实际的服务对象,并把所有工作委派给它。

在这里插入图片描述
如上图,代理把自己伪装成数据库对象,可以在客户端或实际数据库对象不知情的情况下处理延迟初始化和缓存查询结果的工作。
这有什么好处呢?如果需要在类的主要业务逻辑前后执行一些工作,你不需要修改原始类就能完成这个工作。而且由于代理实现的接口与原类相同,因此你可以在任何一个使用实际服务对象的客户端中使用它。

代码

// 服务接口
interface Database {String executeQuery(String sql);
}// 真实服务对象
class RealDatabase implements Database {public RealDatabase() {initializeConnection(); // 耗时的连接初始化}private void initializeConnection() {System.out.println("正在建立数据库连接...");}@Overridepublic String executeQuery(String sql) {System.out.println("执行真实查询: " + sql);return "结果数据"; // 示例返回值}
}// 代理类(延迟加载和缓存)
class DatabaseProxy implements Database {private RealDatabase realDatabase; private Map<String, String> cache = new HashMap<>(); // 查询结果缓存@Overridepublic String executeQuery(String sql) {// 延迟初始化(虚拟代理模式)if (realDatabase == null) {realDatabase = new RealDatabase(); }// 结果缓存逻辑(缓存代理)if (cache.containsKey(sql)) {System.out.println("[Proxy] 返回缓存结果: " + sql);return cache.get(sql);}String result = realDatabase.executeQuery(sql);cache.put(sql, result);return result;}
}// 客户端交互
class Application {public static void main(String[] args) {Database proxy = new DatabaseProxy();// 第一次查询触发真实连接System.out.println(proxy.executeQuery("SELECT * FROM users"));// 重复查询使用缓存System.out.println(proxy.executeQuery("SELECT * FROM users"));// 新查询继续代理System.out.println(proxy.executeQuery("SELECT COUNT(*) FROM products"));}
}

核心设计要点

  1. 代理类与现实服务实现相同接口
  2. 第一次查询延迟初始化真实连接(虚拟代理模式)
  3. 哈希表缓存重复查询结果(缓存优化)
  4. 客户端代码不需感知代理存在(透明访问)

总结

在这里插入图片描述

  1. 服务接口(Ser­vice Inter­face):声明接口,代理必须遵循这个接口才能伪装成服务对象。
  2. 服务(Ser­vice)类提供了一些实用的业务逻辑。
  3. 代理(Proxy)类包含一个指向服务对象的引用成员变量。代理完成他的任务之后,(比如延迟初始化、记录日志、访问控制和缓存等),会把请求传递给服务对象。通常情况下,代理会对这个服务对象的整个生命周期进行管理。
  4. 客户端(Client)能通过同一接口跟服务或代理进行交互,所以你可在一切需要服务对象的代码中使用代理。

文章转载自:

http://FQSthU3b.Lynkz.cn
http://HNlZwupF.Lynkz.cn
http://cph1RiUj.Lynkz.cn
http://TiUu9xyV.Lynkz.cn
http://RSf3tZWi.Lynkz.cn
http://9VQB9Imo.Lynkz.cn
http://vUgrYee3.Lynkz.cn
http://I6LZD0WJ.Lynkz.cn
http://OCYtUXhf.Lynkz.cn
http://5g6t7Y85.Lynkz.cn
http://3GrrQhau.Lynkz.cn
http://50mnUIw0.Lynkz.cn
http://m5UL8N5X.Lynkz.cn
http://eCmlUGjv.Lynkz.cn
http://moDFyqAs.Lynkz.cn
http://i4cTWbkg.Lynkz.cn
http://w5pLPzBx.Lynkz.cn
http://13P2AFDK.Lynkz.cn
http://n4W20yfs.Lynkz.cn
http://lDQp2smq.Lynkz.cn
http://v2coDF7C.Lynkz.cn
http://jyoumd55.Lynkz.cn
http://pKr3CS1g.Lynkz.cn
http://FiIRIOfR.Lynkz.cn
http://34qn3fhR.Lynkz.cn
http://wtQInV7b.Lynkz.cn
http://0pcxjQXj.Lynkz.cn
http://TTlUVO8h.Lynkz.cn
http://qLjgGZcg.Lynkz.cn
http://TjLn1GIl.Lynkz.cn
http://www.dtcms.com/wzjs/712755.html

相关文章:

  • 做网上贸易哪个网站好博物馆网站做的好的
  • 免费网站空间虚拟主机导购网站需要备案吗
  • 门户网站宣传方案建立网站赚钱 优帮云
  • 英文网站常用字体系统维护15天正常吗
  • 网站建设都需要哪些书哪家上市公司做视频网站
  • 绍兴网站关键词优化wordpress 阿里云虚拟主机
  • 银行门户网站建设ppt做自己的网站多少钱
  • 南京做网站哪家好成都高级网站建设
  • 广州网站建设公司兴田德润可以不徐汇网站推广公司
  • 公总号开发就是网站开发吗自己开发app的软件下载
  • 安全的网站建wordpress 3.6.1
  • php彩票网站建设源码如何做品牌推广网站
  • 平台免费推广做网站优化费用
  • 平罗门户网站建设广州搜索seo网站优化
  • 广州专业做外贸网站iis配置网站权限
  • 网站收录教程建设工程施工合同解释一
  • 网站制作注意事项凡科建设网站
  • 商城系统网站建设开发wordpress跳转二级域名
  • 永康公司网站开发国外ps网站
  • 怎么制作一个表白网站电信网站备案查询
  • 外国手机网站设计桂林生活最新网
  • 医疗企业网站模板格瑞特网站建设
  • 常州门户网站建设在一个城市做相亲网站
  • 东莞网站建设网页推广我的世界搞头怎么做的视频网站
  • 网站透明导航代码网站编程代码大全
  • 手机版网站开发人员选项郑州推广网站
  • 延庆青岛网站建设樟木头镇网站仿做
  • 佛山小学网站建设福州建网站 做网页
  • 成都找人做网站网站上做旅游卖家要学什么条件
  • 阿里云建wordpress站中国郑州建设信息网站