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

充值选建设银行打不开网站WordPress图片裁减

充值选建设银行打不开网站,WordPress图片裁减,凡客建站网站下载,网站开发选择框代码介绍 享元模式运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象#xff0c;而这些对象都很相似#xff0c;状态变化很小#xff0c;可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象#xff0c;因此它又称为轻量级模式#xff…介绍 享元模式运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象而这些对象都很相似状态变化很小可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象因此它又称为轻量级模式是一种对象结构型模式。 实现 myclass.h // // Created by yuwp on 2024/1/12. //#ifndef DESIGNPATTERNS_MYCLASS_H #define DESIGNPATTERNS_MYCLASS_H#include iostream #include unordered_mapclass Flyweight { // 享元抽象类 public:Flyweight(const std::string in);virtual void operation(const std::string out) 0;const std::string getMIn() const;private:std::string m_in; };class ConcreteFlyweight : public Flyweight { // 具体享元类 public:ConcreteFlyweight(const std::string in);void operation(const std::string out) override; };class FlyweightFactory { // 配合工厂模式使用享元工厂类 public:~FlyweightFactory();Flyweight *getFlyweight(const std::string key); private:std::unordered_mapstd::string, Flyweight * m_flyweights; };#endif //DESIGNPATTERNS_MYCLASS_Hmyclass.cpp // // Created by yuwp on 2024/1/12. //#include myclass.hFlyweight::Flyweight(const std::string in) {m_in in; }const std::string Flyweight::getMIn() const {return m_in; }ConcreteFlyweight::ConcreteFlyweight(const std::string in) : Flyweight(in) {}void ConcreteFlyweight::operation(const std::string out) {std::cout 内部状态: getMIn() , 外部状态: out std::endl; }FlyweightFactory::~FlyweightFactory() {for (auto it : m_flyweights) {if (it.second) {delete it.second;}} }Flyweight* FlyweightFactory::getFlyweight(const std::string key) {auto it m_flyweights.find(key);if (it ! m_flyweights.end()) {return it-second;} else {Flyweight *flyweight new ConcreteFlyweight(key);m_flyweights.insert(std::make_pair(key, flyweight));return flyweight;} } main.cpp #include iostream #include mutex #include myclass.hint main() {FlyweightFactory *factory new FlyweightFactory();auto fly1 factory-getFlyweight(a);auto fly2 factory-getFlyweight(b);auto fly3 factory-getFlyweight(a);fly1-operation(1);fly2-operation(2);fly3-operation(3);delete factory;return 0; } 总结 优点 1. 可以极大减少内存中对象的数量使得相同或相似对象在内存中只保存一份从而可以节约系统资源提高系统性能。 2. 享元模式的外部状态相对独立而且不会影响其内部状态从而使得享元对象可以在不同的环境中被共享。 缺点 1. 享元模式需要分离出内部状态和外部状态从而使得系统变得复杂这使得程序的逻辑复杂化。 2. 为了使对象可以共享享元模式需要将享元对象的部分状态外部化而读取外部状态将使得运行时间变长。 适用场景 1. 一个系统有大量相同或者相似的对象造成内存的大量耗费。 2. 对象的大部分状态都可以外部化可以将这些外部状态传入对象中。 3. 在使用享元模式时需要维护一个存储享元对象的享元池而这需要耗费一定的系统资源。因此在需要多次重复使用同一享元对象时才值得使用享元模式。 练习 myclass.h // // Created by yuwp on 2024/1/12. //#ifndef DESIGNPATTERNS_MYCLASS_H #define DESIGNPATTERNS_MYCLASS_H#include iostream #include unordered_mapclass Flyweight { // 享元抽象类 public:Flyweight(const std::string in);virtual void display(const std::string out) 0;const std::string getMIn() const;private:std::string m_in; };class PictureFlyweight : public Flyweight { // 具体享元类 public:PictureFlyweight(const std::string in);void display(const std::string out) override; };class AnimationFlyweight : public Flyweight { // 具体享元类 public:AnimationFlyweight(const std::string in);void display(const std::string out) override; };class VideoFlyweight : public Flyweight { // 具体享元类 public:VideoFlyweight(const std::string in);void display(const std::string out) override; };class FlyweightFactory { // 配合工厂模式使用享元工厂类 public:~FlyweightFactory();Flyweight *getFlyweight(const std::string key);static FlyweightFactory *getInstance(); private:FlyweightFactory();std::unordered_mapstd::string, Flyweight * m_flyweights; };#endif //DESIGNPATTERNS_MYCLASS_Hmyclass.cpp // // Created by yuwp on 2024/1/12. //#include myclass.hFlyweight::Flyweight(const std::string in) {m_in in; }const std::string Flyweight::getMIn() const {return m_in; }PictureFlyweight::PictureFlyweight(const std::string in) : Flyweight(in) {}void PictureFlyweight::display(const std::string out) {std::cout out , getMIn() std::endl; }AnimationFlyweight::AnimationFlyweight(const std::string in) : Flyweight(in) {}void AnimationFlyweight::display(const std::string out) {std::cout out , getMIn() std::endl; }VideoFlyweight::VideoFlyweight(const std::string in) : Flyweight(in) {}void VideoFlyweight::display(const std::string out) {std::cout out , getMIn() std::endl; }FlyweightFactory::FlyweightFactory() {}FlyweightFactory* FlyweightFactory::getInstance() {static FlyweightFactory *factory new FlyweightFactory();return factory; }FlyweightFactory::~FlyweightFactory() {for (auto it : m_flyweights) {if (it.second) {delete it.second;}} }Flyweight* FlyweightFactory::getFlyweight(const std::string key) {auto it m_flyweights.find(key);if (it ! m_flyweights.end()) {return it-second;} else {Flyweight *flyweight nullptr;if (key 图片) {flyweight new PictureFlyweight(key);} else if (key 动画) {flyweight new AnimationFlyweight(key);} else if (key 视频) {flyweight new VideoFlyweight(key);}m_flyweights.insert(std::make_pair(key, flyweight));return flyweight;} } main.cpp #include iostream #include mutex #include myclass.hint main() {FlyweightFactory *factory FlyweightFactory::getInstance();factory-getFlyweight(图片)-display(1);factory-getFlyweight(动画)-display(2);factory-getFlyweight(视频)-display(3);factory-getFlyweight(图片)-display(4);return 0; }
http://www.hkea.cn/news/14550591/

相关文章:

  • 怎么用花生壳做网站wordpress怎么使用七牛
  • 学院网站开发网站定位软文推广的标准类型
  • 电商后台管理网站模板seo推广专员工作好做吗
  • 怎么做平台网站聊城网站建设哪个好
  • 网站建设推广信息好看模板大全
  • 淄博市沂源县建设局网站漳州台商投资建设局网站
  • 网站如何创建首页南昌模板建站代理
  • 级a做爰片免费视网站看看东莞网络公司招聘信息
  • 如何查询自己的网站是否被收录怎么看网站开发的好坏
  • 开发员给我用织梦做的网站广告营销模式
  • 怎么做网站源代码黄浦网站制作
  • 建设旅游网站系统网站建设合同印花税税率
  • 创意设计提案seo公司怎样
  • 网站建设简报ui培训怎么样
  • 龙泉驿网站seo网站建设类型
  • 霸榜seo谷歌优化推广
  • 石家庄又开始管控了seo建设
  • 橱柜网站源码竹子建站下载
  • 做大数据和网站开发的前景wordpress注册没用
  • 网站建设责任分工集团公司网页设计
  • 建设心理网站国外做机械设计任务的网站
  • 使用oss做静态网站学校网页设计模板html
  • 推广做网站南充怎么注册公司公众号
  • 泉州网站建站推广做网站排名有用吗
  • 李尚荣网站建设如何知道一个网站是用什么做的
  • 哪里有做网站推广高青网站建设
  • 如何用自己电脑做网站服务器吗中国商机网
  • 建网站需要什么编程技术网站地图制作视频教程
  • 网站在什么环境下做手机端开发app
  • 免费自助建站系统公司官网单页源码