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

综合门户网站建设可以做网站的魔盒

综合门户网站建设,可以做网站的魔盒,网站的优化外包,辽宁省网站备案目录 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.pierceye.com/news/107213/

相关文章:

  • 学做饼干的网站汕头建设学校的网站
  • asp.net做网站原理工资卡app下载
  • 做齐鲁油官方网站集团网站建设报价
  • 网站的收录情况怎么查企业网银怎么登录
  • 网站开发会计处理wordpress阅读随机增加
  • 兰州做网站公司哪家好公司网站建设是什么意思
  • 小区物业管理网站开发报告deal 网站要怎么做
  • seo站长助手wordpress 注册侧边栏
  • 做网站是要编程吗那些网站是html5做的
  • 网站开发图在网站做电子画册
  • 怎样建一个英文网站wordpress 多用户商城
  • 制作一个自适应网站源码app在线生成器
  • Dw做html网站项目管理软件有哪些
  • 天津网站建设定制软件开发服务公司
  • 做企业网站cms减肥网站源码
  • 建设工程检测预约网站猎头公司怎么找
  • 北京网站手机站建设公司手机网站开发常用工具
  • 太原做网站联系方式论坛的网站开发项目
  • drupal 做的网站网站设计与网站制作
  • 我要表白网站在线制作wordpress朗读句子插件
  • 黑龙江建设网官方怎么提高seo关键词排名
  • 拍卖网站开发多少钱十堰秦楚网招聘公告
  • 区域城市分站网站怎么做慈溪网站开发
  • 广州天河网站制作互联网十创业项目
  • 百度是不是只有在自己的网站发布才会被收录完备的常州网站优化
  • 响应式网站开发需要的条件百度信息流广告推广
  • 英文网站建设推广joomla drupal wordpress
  • 什么网站做简历免费下载怎么申请专线访问国际网络
  • 南三环做网站的公司网站开发开题报告计划进度安排
  • 我想建一个网站怎么建微信 网站提成方案点做