获胜者网站建设旅游网页素材

news/2025/10/3 18:28:22/文章来源:
获胜者网站建设,旅游网页素材,网站规划和建设进度,程序外包平台目录 1、享元模式#xff08;Flyweight Pattern#xff09;含义 2、享元模式的UML图学习 3、享元模式的应用场景 4、享元模式的优缺点 5、C实现享元模式的简单实例 1、享元模式#xff08;Flyweight Pattern#xff09;含义 享元模式#xff08;Flyweight#xff09…目录 1、享元模式Flyweight Pattern含义 2、享元模式的UML图学习 3、享元模式的应用场景 4、享元模式的优缺点 5、C实现享元模式的简单实例 1、享元模式Flyweight Pattern含义 享元模式Flyweight运用共享技术有效地支持大量细粒度地对象。 1享元模式Flyweight Pattern是一种结构型设计模式旨在通过共享对象来最大程度地减少内存使用和提高性能。它适用于存在大量细粒度对象且这些对象之间有许多共享状态的情况。 2在享元模式中将对象分为两种状态内部状态Intrinsic State和外部状态Extrinsic State。内部状态是对象固有的、不会随着外部环境变化而变化的状态可以被多个对象共享而外部状态是对象依赖的、可能随着外部环境变化而变化的状态每个对象都需要单独维护。 3享元模式的核心思想是将可共享的内部状态从具体对象中提取出来并将其存储在一个享元池或缓存中。当需要创建对象时先检查享元池中是否已经存在相应的享元对象如果存在则直接返回如果不存在则创建新的享元对象并放入享元池中。客户端通过享元工厂来获取或操作享元对象同时传递外部状态给享元对象进行处理。 2、享元模式的UML图学习 在享元模式中主要包含以下几个角色 1享元工厂Flyweight Factory负责创建和管理享元对象。它维护一个享元池或缓存用于存储已经创建的享元对象并根据客户端的请求返回相应的享元对象。 2抽象享元Flyweight定义了享元对象的接口声明了享元对象可以接收的外部状态参数。 3具体享元Concrete Flyweight实现了抽象享元接口同时也包含内部状态。具体享元对象需要注意内部状态和外部状态的分离确保内部状态是可共享的。 4UnshareConcreteFlyweight是指那些不需要共享地Flyweight子类。因为Flyweight接口共享成为可能但它并不强制共享解决那些不需要共享对象地问题。 5客户端Client通过享元工厂来获取或操作享元对象。客户端通常会维护一些外部状态并将其传递给享元对象进行处理。 3、享元模式的应用场景 1系统中存在大量相似对象且创建和销毁这些对象会消耗大量资源时可以考虑使用享元模式来共享对象。 2对象的状态可以分为内部状态和外部状态且内部状态相对稳定不变而外部状态可变时可以使用享元模式来共享内部状态减少对象的数量。 4、享元模式的优缺点 1优点 1节省内存通过共享对象减少了系统中对象的数量从而节省了内存空间。特别是当需要创建大量细粒度的对象时享元模式可以显著减少内存的消耗。 2提高性能由于共享对象可以被多个客户端共享因此可以减少对象的创建和销毁次数提高了系统的性能。 3支持可变状态和不可变状态享元模式将对象的状态分为内部状态和外部状态其中内部状态是不可变的而外部状态是可变的。这样可以在一定程度上支持对象的可变性同时保持了对象的共享性。 2缺点 1对象共享可能导致线程安全问题如果多个线程同时访问并修改了共享对象的外部状态就会出现线程安全问题。在使用享元模式时需要注意对共享对象的并发访问进行合理的同步控制。 2增加了系统的复杂性引入享元模式会增加系统的复杂性需要额外的工厂类来管理享元对象的创建和共享。这增加了代码的复杂性和维护成本。 总结 享元模式通过共享对象来减少系统中对象的数量从而节省了内存空间并提高了系统的性能。然而它也增加了系统的复杂性并可能引入线程安全问题。在使用享元模式时需要根据具体情况权衡利弊合理设计和管理共享对象。 5、C实现享元模式的简单实例 #include iostream #include unordered_map// 抽象享元类 class Flyweight { public:virtual void operation(int extrinsicState) 0; };// 具体享元类 class ConcreteFlyweight : public Flyweight { public:void operation(int extrinsicState) override {std::cout 具体享元对象外部状态 extrinsicState std::endl;} };// 享元工厂类 class FlyweightFactory { private:std::unordered_mapint, Flyweight* flyweights;public:Flyweight* getFlyweight(int key){if (flyweights.find(key) flyweights.end()) {flyweights[key] new ConcreteFlyweight();}return flyweights[key];} };int main() {FlyweightFactory factory;Flyweight* fw1 factory.getFlyweight(1);fw1-operation(10);Flyweight* fw2 factory.getFlyweight(2);fw2-operation(20);Flyweight* fw3 factory.getFlyweight(1); // 从缓存中获取已有的享元对象fw3-operation(30);delete fw1;delete fw2;// 注意不要删除fw3因为它是从享元池中获取的对象由享元工厂负责管理和销毁return 0; }在上述示例中通过享元工厂FlyweightFactory创建和管理享元对象ConcreteFlyweight。客户端根据需要获取具体的享元对象并传递外部状态给享元对象进行操作。

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

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

相关文章

深圳网站建设 设计首选中国建设银行南京分行网站首页

儿童安全门和围栏 儿童安全门和围栏用于在门口(如门道)内设置围栏,或用作自支撑围栏,将幼儿可能在其中活动的区域围起来。这些商品可能由塑料、金属、乙烯树脂或木制组件等材料制成。此政策包括但不限于可扩展围栏、伸缩安全门和…

最短路练习

最短路为背景的题 + 做法是最短路的题A - Minimum Path https://www.luogu.com.cn/problem/CF1473E经典套路,发现可以把 max 和 min 换成任意路径中的边,然后 max 和 min 就会最小化这个式子 故写一个 Dijkstra + DP…

东莞网站建设选择菲凡网络wordpress布局切换功能

题目: P2024 [NOI2001] 食物链 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 本文学习自: 题解 P2024 【食物链】 - RE: 从零开始的异世界信竞生活 - 洛谷博客 (luogu.com.cn) ———— 关系并查集其实就是在普通并查集的基础上额外开个数组r…

依据XShell采用Git三板斧

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

沈阳微信网站制作重庆市建设工程管理网

文章来源:芯片开放社区,作者:OCC编辑万里征途迈出第一步,基于RISC-V的安卓10系统来了。点击链接查案演示视频: 平头哥芯片开放社区(OCC)​occ.t-head.cn今天,平头哥完成了安卓10对RISC-V的移植并开源了全部…

什么网站做ppt赚钱app下载注册量推广平台

spring4单切面 spring4多切面 spring4 spring5

杂题,为什么博客的标题必须互异

不会的东西越来越多了B. K-Set Tree https://www.luogu.com.cn/problem/CF1691F 令 \(F_i\) 表示以 \(1\) 为根时,\(S\) 在 \(i\) 子树内的答案。则: \[F_u=\left(C_{siz_u}^k-\sum C_{siz_v}^k\right)\cdot siz_u+\…

学习笔记:压位高精

把 ddxrS 吓到了,发出惊世疑问:『为什么高二机房正在激烈地讨论怎么写高精度?』考虑 10-base 高精度,单次运算复杂度为 \(O(\log_{10}V)\)。使用 10-base 的主要原因是 std::to_string 很方便、输出也很简单。 但效…

响应式网站有什么弊端微信公众号做推送的网站

本文详解WPF的Button控件。 目录 前言 定义 属性 事件 应用实例 1、普通应用

吉司机 + 历史和练习

并非所有历史和都是吉司机A - Just Another Game of Stones https://www.luogu.com.cn/problem/P9631发现如果选定了这一步取的位置 \(i\),那么要拿的石子是定值 \(a_i-a_i\oplus s\),当 \(a_i\le a_i\oplus s\) 时不…

探索3D空间的视觉基础模型系列 - 指南

探索3D空间的视觉基础模型系列 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mona…

近期杂题,怎么重名了

突围E - Colinear https://atcoder.jp/contests/abc422/tasks/abc422_e 看到题目会有一个乱搞的想法:随机取一对点,那么是有 \(\dfrac 14\) 的概率都在直线上的。带进去暴力 check 一下,多来几次正确率就比较高。 什…

可以做配音兼职的网站微信网站怎么做的好名字

目录 HarmonyOS设备开发学习路径一、开发项目与工具介绍1.1、设备开发环境准备1.2、设备开发流程1.3、Huawei DevEco Device Tool 二、OpenHarmony介绍OpenHarmony目录结构详细介绍applications目录详解base目录详解foundation目录详解 OpenHarmony接口分层介绍CMSIS 和 POSIX …

vp 记录 edu 181

tzl 太强了!真挚的膜拜lhy 太强了!真挚的膜拜E. Sets of Complementary Sums https://codeforces.com/contest/2125/problem/E 分拆数、其实是个不牛的东西,但是写假了 😅 令集合元素升序排列为 \(b_{1\sim n}\)。…

状压 DP

没补完(1/3),动作还是太慢了A - 只不过是长的领带 2 / Just Long Neckties 2 https://www.luogu.com.cn/problem/P11665 需要观察到,任意时刻 \(B\) 中不存在重复元素。把 \(B\) 压出来,令 \(f_{i,S}\) 表示选了 …

近期杂题

这段时间比赛的一些题 和 nKessi、duanyu 讲的题目。太偏计数、数学的基本上没办法做了。A. 出关 http://222.180.160.110:61235/contest/6462/problem/1给定 \(s\),对于一个空串,任意利用下列三种操作,使其变为 \(…

学习笔记:分拆数与 Ferrers 图

需要知道概念和求法,有一定的用处分拆数与互异分拆数 要求:给定一个正整数 \(n\),要求将其划分为 \(m\) 个可重 / 不可重的正整数,问本质不同的方案数。(显然 \(m\) 与 \(\sqrt n\) 同阶。) 不妨令划分结果单调不…

DDP 与全局平衡二叉树

其实动态 DP 不是动态树 DP 的同义词动态 DP 对于转移只依赖前几项的 DP,可以放进矩阵。 默认转移范围是 \([1,n]\);如果我们需要改变求解范围,发现如果能获取转移矩阵的乘积就很快了。考虑存下来。 如果需要单点修…

所有北京网站建设公司六安网红小杨哥

目录 引言1. 构造函数1.1概念1.2 特性 2. 析构函数2.1 概念2.2 特性 3. 拷贝构造函数3.1 概念3.2特征 4. 赋值运算符重载4.1 运算符重载4.2 赋值运算符重载4.3 前置和后置重载 5.日期类的实现6.const成员7.取地址及const取地址操作符重载 引言 当一个类既没有成员变量又没有成…

旅游网站怎样做网络宣传网络文化经营许可证查询

Random类:用来生成随机数 Random rnew Random(); int numr.nextInt();//所有int范围,有正负两种 int num1r.nextInt();//[0,3)左闭右开