CH09_避免浪费

Flyweight模式

享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象。

类图

在这里插入图片描述

说明

  • Flyweight(轻量级)

    按照通常方式编写程序会导致程序变重,所以如果能够共享实例会比较好,而Flyweight角色表示的就是那些实例会被共享的类。

  • FlyweightFactory(轻量级工厂)

    FlyweightFactory角色是生成Flyweight角色的工程。在工厂中生成Flyweight角色可以实现共享实例。

  • Client(请求者)

    Client角色使用FlyweightFactory角色来生成Flyweight角色。

其他

享元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量细粒度的类实例来表示数据。如果能发现这些实例除了几个参数外基本都是相同的,有时就能够受大幅度地减少需要实例化的类的数量。如果能把那些参数移到类实例的外面,在方法调用时将它们传递进来,就可以通过共享大幅度地减少单个实例的数目。

Proxy模式

代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。

类图

在这里插入图片描述

说明

  • Subject(主体)

    Subject角色定义了使Proxy角色和RealSubject角色之间具有一致性的接口。由于存Subject角色,所以Client角色不必在意它所使用的究竟是Proxy角色还是RealSubject角色。

  • Proxy(代理人)

    Proxy角色尽量处理来自Client角色的请求。只有当自己不能处理时,它才会将工作交给RealSubject角色。Proxy角色只有在必要时才会生成RealSubject角色。Proxy角色实现了在Subject角色中定义的接口(API)

  • RealSubject(实际的主体)

    RealSubject角色会在Proxy角色无法胜任工作时出场。它与Proxy角色一样,也实现了在Subject角色中定义的接口(API)

  • Client(请求者)

    使用Proxy模式的角色,Client角色并不包含在Proxy模式中。

模式的应用

  • 远程代理

    为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。典型应用场景有WebService,RPC等。

  • 虚拟代理

    根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。典型案例:浏览器打开一个很大的HTML网页时,网页中有何多的文字和图片,浏览器会先渲染文字部分展示给用户,而图片则是在后台下载完后再逐个渲染。

  • 安全代理

    用来控制真实对象访问时的权限(功能)。典型案例:经典的三层结构,一般数据层封装了对数据库的接口;业务层只能调用数据层封装的功能接口,不能直接访问数据,不能执行任意的SQL脚本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/610542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea右上角浏览器图标没有idea内部浏览器怎么显示

idea右上角浏览器图标没有idea内部浏览器怎么显示 file -> settings -> tools -> web brosers 选择需要的浏览器,勾选上展示到编辑器中 打开上图的Built-in Preview,就会显示idea标志的内部显示了!!!

UWB 技术及应用

超宽带技术为工业自动化提供独特优势,是首要的室内定位技术。 UWB 因其相对于 RFID、BLE 或 WiFi 等同类技术的众多优势而被认为是室内定位技术的黄金标准。它是基于位置的自动化的理想解决方案。 UWB 结合了短光速脉冲,可在宽带宽上精确测量信号到达时…

错误0x80070091(目录不是空的) 解决方案

推荐阅读 智能化校园:深入探讨云端管理系统设计与实现(一) 智能化校园:深入探讨云端管理系统设计与实现(二) 文章目录 推荐阅读问题产生:解决方案:方法一:方法二&#x…

Linux下进程控制

文章目录 创建进程fork创建进程fork返回值写诗拷贝fork常规用法fork失败的原因 进程终止进程正常终止查看进程退出码_exit函数exit函数exit 和 _exit 的区别return退出 进程等待进程等待的方式wait方法(系统调用)waitpid方法(系统调用) WEXITSTATUS 和 WIFEXITED阻塞等待和非阻…

Windows 安装Hyber-V,并创建虚拟机

文章目录 Hyper-V名词解释Hyper-V 有哪些功能?Windows 上怎么启用Hyber-V1,通过“设置”启用 Hyper-V 角色2,使用 PowerShell 启用 Hyper-V3,使用 CMD 和 DISM 启用 Hyper-V 利用Hyper-V创建一个虚拟机 Hyper-V名词解释 Hyper-V …

科研绘图(一)山脊图

从今日开始,为大家开辟一个新的系列科研绘图。同一个竞赛下,大家都近乎相同的解题思路下。之所以能出现一等二等三等奖的区别很大部分都在于结果的可视化,为了能更好地帮助大家进行可视化,今后将专门推出一个可视化板块&#xff0…

解决方案|镭速助力汽车行业实现数据高速传输数字化进程

在新一代信息技术驱动的数字经济时代,数据已然成为新型生产要素,是国家基础性资源和战略性资源,在汽车市场全球化背景下,产品、数据跨境、区域协同将成为车企未来常态。 1、数字时代,车企数据管理面临新课题 汽车产业…

使用Nonebot编写QQ机器人

使用 NoneBot 这个工具,来编写 QQ 机器人。 安装基础软件 一、安装 NoneBot 库 直接使用 pip 安装即可 pip install nonebot二、安装酷Q 软件和 HTTP API 插件 酷Q 软件可以直接到官网下载,https://cqp.cc/b/news,或者可以到网盘下载&am…

互斥、自旋、读写锁的应用场景

互斥、自旋、读写锁的应用场景 锁🔒1、互斥锁、自旋锁2、读写锁:读写的优先级3、乐观锁和悲观锁总结: 锁🔒 ​ 多线程访问共享资源的生活,避免不了资源竞争而导致错乱的问题,所以我们通常为了解决这一问题…

虚拟机Ubuntu网络配置

电脑有两个系统,windows系统和ubuntu系统,那网卡到底给哪一个用呢,所以要选择桥接模式,就可以共用网卡 但是我们电脑网卡,有线网卡,无线网卡,到底使用哪个网卡,所以选择桥接到自动或…

Word中的书签

书签是一种标记,用于标记文档中的特定位置,以便稍后快速导航到该位置。 我常用的是WPS里面的Word 1、如何使用书签 书签在插入选项卡下可以找到。 点击书签后,设置好书签名称,添加即可。 接下来在视图选项卡中找到导航窗口。选…

docker搭建部署mysql并挂载指定目录

Docker是一种轻量级、可移植的容器化平台,可以简化应用程序的部署和管理。在本文中,我们将探讨如何使用Docker来搭建和部署MySQL数据库,并将数据和配置文件挂载到外部目录,以实现数据持久化和方便的配置管理。 1: 安装Docker 首…

基于蚁群算法的TSP问题建模求解(Python)

基于蚁群算法的TSP问题建模求解 一、蚁群优化算法(Ant Colony Optimization,ACO)1.1 蚁群算法的起源——“双桥实验”1.2 蚁群优化算法思想1.3 蚁群算法应用于求解组合优化问题 二、基于蚁群算法的TSP问题建模求解2.1 旅行商问题(…

格式工厂怎么转换视频方向

格式工厂因为其免费、操作简单、功能齐全的多重优势,深受大家的喜欢。格式工厂具有可以转换视频、音频、去水印、转换GIF、图片转换、PDF合并、PDF转换等功能,然而在对视频进行剪辑的时候,往往会发现找不到格式工厂的转换视频方向的功能&…

Kibana错误【Kibana server is not ready yet】

docker部署kibana成功后,访问http://localhost:5601 ,页面返回“Kibana server is not ready yet” 运行 docker logs kibana 后提示 该错误提示为kibana的版本和es的版本不一致,将两个组件的版本更新一致即可 还有另外一种错误 在kibana的kibana.yml配…

AI老照片上色-DeOldify

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. 老照片上色原理 2…

windows10+ubuntu20.04双系统中,ubuntu系统显示home空间不足的扩容方法

实际上网上有两种扩容方法,除了本文的方法外,另一种是在使用启动U盘打开试用ubuntu,应该涉及到nvidia显卡驱动问题故未采用。另一种即本文。 最开始安装双系统时内存分配没有分配好,给ubuntu系统分配的空间较小,导致了后来的的问…

Multimodal Segmentation of Medical Images with Heavily Missing Data

F是mapping function 吐槽 图3太简单了吧。作者未提供代码

iOS14 Widget 小组件调研

桌面小组件是iOS14推出的一种新的桌面内容展现形式。 根据苹果的统计数据,“一般用户每天进入主屏幕的次数超过90次”,如果有一个我们应用的小组件在桌面,每天都有超过90次曝光在用户眼前的机会,这绝对是一个顶级的流量入口。 “…

Oracle之 第1篇 Oracle 11g 简介

目录 Oracle之 第1篇 Oracle 11g 简介 1.1 Oracle概述 1.2 Oracle 11g 系统的体系结构★ 1.1 Oracle物理结构 1.1物理结构--数据文件 1.1.2 物理结构---日志文件 1.1.3 物理结构---控制文件 1.2.4 配置文件 Oracle之 第1篇 Oracle 11g 简介 1.1 Oracle概述 常用…