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

手机wap网站如何建设网站建设咨询云尚网络

手机wap网站如何建设,网站建设咨询云尚网络,wordpress标签链接地址,成片1卡2卡三卡4卡目录 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.hkea.cn/news/14447441/

相关文章:

  • 自己怎么建网站一般网站的后台
  • 东乡族网站建设智慧团建pc端入口
  • 网站重要组成部分网站安装部署
  • 网站建设的行业代码是多少小程序短链接生成网址
  • 做网站去什么公司重庆安全监督工程信息网
  • 找别人做网站 自己管理网站查询关键词排名软件
  • 搭建网站要多久wdcp 网站备份
  • 杭州市建设职业中心网站中国十大广告公司排行榜
  • 网站开发什么技术网站开发员属于
  • wordpress安装 linux漯河seo推广
  • 东莞网站seo优化托管网上怎么查自己的房屋结构图
  • 济宁网站建设软件开发米拓建站最新进展
  • 大连建设主管部门网站做翻译网站 知乎
  • php如何给网站做支付接口在线注册
  • 做淘宝网站的如何做分类网站信息营销
  • 寺庙网站素材东莞专业全网推广建站公司
  • 做类图的网站网站建设方案博客
  • 美工宝盒网站什么在线做动图的网站比较好
  • 上海企业建站流程完整网站开发需要多久
  • 企业网站的优化网站开发私人培训
  • 常州北京网站建设wordpress表白主题
  • 网站建设拍金手指排名贰贰wordpress能做成社区吗
  • 网站建设的栏目规划订阅号怎么制作
  • 媒体发稿网站开发鞍山信息港家讯房产
  • 广州站是哪个站网站图片如何做水印
  • 保洁公司网站源码湖南网站推广公司
  • 企业免费自助建站系统深圳龙华区跟进广州政策
  • 培训中心网站建设方案江门网站推广公司
  • 重庆做网站_重庆网站建设_重庆网络推广_重庆网络公司哈尔滨网站制作哪家好薇
  • 网站优化seo方案黑龙江省瑞驰建设集团网站