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

自己做的网站别人怎么访问放置文件

自己做的网站别人怎么访问,放置文件,西安行业网站制作,宁波静态网站网页建设上一篇地址#xff1a;持续总结中#xff01;2024年面试必问 20 道设计模式面试题#xff08;四#xff09;-CSDN博客 九、请解释代理模式#xff08;Proxy Pattern#xff09;及其类型。 代理模式#xff08;Proxy Pattern#xff09;是一种结构设计模式#xff0c…上一篇地址持续总结中2024年面试必问 20 道设计模式面试题四-CSDN博客 九、请解释代理模式Proxy Pattern及其类型。 代理模式Proxy Pattern是一种结构设计模式它为另一个对象提供一个代替或占位符的对象以便控制对它的访问。代理模式可以在不直接与实际对象交互的情况下提供对目标对象的间接访问。这种模式在以下情况下非常有用 当需要对目标对象的访问进行控制时。当需要在访问对象时执行额外的操作如延迟初始化、访问前的权限检查等。当需要为远程对象或复杂对象提供一种更简单的接口时。 代理模式的组成部分 主题接口Subject Interface定义了真实对象和代理对象的共同接口这样代理可以代替真实对象被使用。真实主题Real Subject定义了代理所代表的真实对象实现了主题接口。代理Proxy包含对真实主题的引用实现了相同的主题接口并控制对真实主题的访问。 代理模式的类型 远程代理Remote Proxy为位于不同地址空间的对象提供代理隐藏对象位于远程地址空间的事实。它通常用在分布式系统中。 虚拟代理Virtual Proxy延迟创建开销较大的对象。当第一次需要时虚拟代理会加载并初始化真实对象。 保护代理Protection Proxy控制对原始对象的访问根据不同的访问权限提供不同的访问策略。 智能引用Smart Reference在访问对象时执行额外的操作如引用计数、线程安全检查等。 缓存代理Caching Proxy为开销较大的操作结果提供存储当同样的操作请求发生时可以直接使用缓存结果避免重复计算。 同步代理Synchronization Proxy为多个线程提供同步访问某个对象的代理确保在同一时间只有一个线程可以访问对象。 防火墙代理Firewall Proxy在网络中控制对某些资源的访问提供安全控制。 复制代理Copy Proxy在复制一个复杂对象时复制代理可以优化复制过程例如按需复制。 示例 假设我们有一个大型图像处理对象我们希望延迟其加载直到真正需要显示图像时。使用虚拟代理模式我们可以这样实现 // 主题接口 interface ImageLoader {void load();void display(); }// 真实主题 class RealImageLoader implements ImageLoader {private String imagePath;public RealImageLoader(String imagePath) {this.imagePath imagePath;}Overridepublic void load() {System.out.println(Loading image from imagePath);}Overridepublic void display() {System.out.println(Displaying image);} }// 代理 class ImageProxy implements ImageLoader {private RealImageLoader realImageLoader;private String imagePath;public ImageProxy(String imagePath) {this.imagePath imagePath;}Overridepublic void load() {if (realImageLoader null) {realImageLoader new RealImageLoader(imagePath);realImageLoader.load();}}Overridepublic void display() {if (realImageLoader ! null) {realImageLoader.display();}} }// 客户端代码 ImageLoader imageLoader new ImageProxy(path/to/image.jpg); imageLoader.display(); // 此时才加载图像 在这个例子中ImageProxy 类作为 RealImageLoader 的代理延迟了图像的加载过程直到 display() 方法被调用时才真正加载图像。这展示了代理模式如何用于控制对资源的访问和执行延迟初始化。 十、什么是命令模式Command Pattern它在实际开发中如何使用 命令模式Command Pattern是一种行为设计模式它将请求或操作封装为一个对象。这种模式的主要目的是将发起请求的对象调用者与执行请求的对象接收者解耦从而让不同的请求可以以统一的方式处理例如执行、排队、记录日志或撤销等。 命令模式的组成部分 命令接口Command Interface声明执行操作的方法通常是一个 execute() 方法。具体命令Concrete Command实现命令接口对应具体的操作包含接收者对象的引用并调用接收者的方法。调用者Invoker要求命令对象执行请求通常包含一个或多个命令对象并可以触发命令的执行。接收者Receiver知道如何实施与执行一个请求相关的操作不直接与调用者或命令对象交互。客户端Client创建具体的命令对象并设置它的接收者然后将命令对象传给调用者。 命令模式在实际开发中的使用 撤销操作命令模式可以很容易地实现撤销功能。通过维护一个命令的历史记录可以逐个撤销命令的效果。 日志记录命令对象可以被用来记录操作历史这对于审计和调试非常有用。 事务支持命令模式可以支持事务性操作确保一系列命令作为一个整体被执行或回滚。 宏命令可以将多个命令组合成一个宏命令作为一个单独的操作执行。 异步命令执行命令模式可以用于实现异步操作命令对象可以被发送到一个后台线程执行。 安全性通过命令模式可以控制哪些操作可以被执行哪些不可以从而提高系统的安全性。 示例 假设我们有一个简单的文本编辑器它支持撤销插入文本的操作。使用命令模式我们可以这样实现 // 命令接口 interface Command {void execute();void undo(); }// 接收者 class TextEditor {private StringBuilder content new StringBuilder();public void type(String words) {content.append(words);}public void remove(int numberOfChars) {content.delete(content.length() - numberOfChars, content.length());}public String getContent() {return content.toString();} }// 具体命令 class InsertCommand implements Command {private TextEditor editor;private String words;private int position;public InsertCommand(TextEditor editor, String words) {this.editor editor;this.words words;this.position editor.getContent().length();}Overridepublic void execute() {editor.type(words);}Overridepublic void undo() {editor.remove(words.length());} }// 调用者 class CommandInvoker {private StackCommand commandHistory new Stack();public void setCommand(Command command) {command.execute();commandHistory.push(command);}public void undo() {if (!commandHistory.isEmpty()) {Command command commandHistory.pop();command.undo();}} }// 客户端代码 TextEditor editor new TextEditor(); CommandInvoker invoker new CommandInvoker();invoker.setCommand(new InsertCommand(editor, Hello)); invoker.setCommand(new InsertCommand(editor, World)); System.out.println(editor.getContent()); // 输出: Hello Worldinvoker.undo(); // 撤销插入 World System.out.println(editor.getContent()); // 输出: Hello 在这个例子中InsertCommand 是一个具体命令它封装了插入文本的操作。TextEditor 是接收者执行实际的文本插入和删除操作。CommandInvoker 是调用者它维护了一个命令的历史记录并可以执行撤销操作。客户端代码通过调用者来执行命令和撤销操作展示了命令模式如何在实际开发中使用。
http://www.dnsts.com.cn/news/116475.html

相关文章:

  • php访问网站去哪里找需要推广的app
  • 专门做地方特产的网站网站建设价钱差异
  • 广东模板建站平台哪些人不适合学电子商务专业
  • jsp网站开发实例pdf网页设计与网站建设全攻略
  • 西安住房和城乡建设局网站网站开发 前景
  • 律师事务所东莞网站建设网站优化有哪些方法
  • 自己如何开网站东坑镇网站仿做
  • 网站接广告平台徐州网站建设公司哪家好
  • 南宁网站seo公司哪家好网易企业邮箱怎么申请
  • 有区域名和主机怎么做网站有哪些网站做外贸的
  • 昆明网站seo技术厂家富阳市建设局网站
  • 医院网站管理办法回收那个网站做推广好
  • 虚拟商品购物网站源码免费手机网站制作app
  • 返利网 网站建设费用佛山网红书店
  • 网站发布 图片看不到做设计有必要买素材网站会员
  • 在公司平台做网站竞拍wordpress怎样添加版权名
  • 建筑工程网上申请质量安全监督随州网站seo
  • xd软件可做网站吗微信公众平台导航 wordpress模版
  • 评估企业网站建设wordpress转换为html5
  • 重庆技术网站建设欧洲卡一卡2卡3卡4卡
  • 制作一个网站需要什么上海游戏公司排名
  • 建设牌官方网站现在最火的推广平台
  • 做简单网站用什么软件有哪些长沙企业建
  • 表白网站在线生成免费app推广运营是做什么的
  • 360免费建站怎么做安卓市场app下载
  • 提供邯郸wap网站建设故乡网站开发的意义
  • 网站建设费用 开办费软件开发是什么职业
  • 爱情动做网站推荐郑州网站建设喝彩科技
  • 网站开发调查问卷怎么做微信网站
  • 贵阳酒店网站建设前端seo优化