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

可信网站申请wordpress推送

可信网站申请,wordpress推送,深圳网站营销公司简介,怎么做海淘网站链接#xff1a;C 设计模式 链接#xff1a;C 设计模式 - 单例模式 享元模式#xff08;Flyweight Pattern#xff09;是一种结构型设计模式#xff0c;它通过共享尽可能多的相同对象来减少内存使用和提高性能。享元模式适用于大量细粒度对象的场景#xff0c;这些对象之…链接C 设计模式 链接C 设计模式 - 单例模式 享元模式Flyweight Pattern是一种结构型设计模式它通过共享尽可能多的相同对象来减少内存使用和提高性能。享元模式适用于大量细粒度对象的场景这些对象之间有很多相同的部分可以通过共享来减少内存消耗。 1.问题分析 在开发中尤其是在需要大量细粒度对象的场景中内存使用和性能优化是两个重要的考虑因素。例如在图形界面、文本编辑器、游戏开发等领域可能会有大量相似或相同的对象需要频繁创建和使用。如果每次都创建新的对象不仅会占用大量内存还会导致性能下降。 为了解决这些问题我们可以结合工厂方法模式和延迟初始化来实现享元模式。具体来说我们可以定义一个工厂类通过延迟初始化和独立工厂函数来动态创建和缓存具体的对象。 2.实现步骤 定义享元接口定义一个抽象的接口包含一个执行方法。实现具体享元类实现享元接口定义具体的类。定义独立工厂函数定义一个独立的工厂函数用于根据类型动态创建具体的对象。实现享元工厂实现一个工厂类通过延迟初始化和独立工厂函数来动态创建和缓存具体的对象。客户端代码使用享元工厂获取具体对象并执行。 3.代码示例 以机器人舞蹈动作作为示例。 3.1.定义享元接口 // 享元接口 class DanceMove {public:virtual ~DanceMove() default;virtual void execute() 0; };3.2.实现具体享元类 // 具体享元类1抬手动作 class RaiseHand : public DanceMove {public:void execute() override { std::cout Executing Raise Hand Move std::endl; } };// 具体享元类2转身动作 class TurnAround : public DanceMove {public:void execute() override { std::cout Executing Turn Around Move std::endl; } };// 具体享元类3踢腿动作 class KickLeg : public DanceMove {public:void execute() override { std::cout Executing Kick Leg Move std::endl; } };3.3.定义独立工厂函数 // 独立工厂函数 std::shared_ptrDanceMove createDanceMove(const std::string type) {if (type RaiseHand) {return std::make_sharedRaiseHand();} else if (type TurnAround) {return std::make_sharedTurnAround();} else if (type KickLeg) {return std::make_sharedKickLeg();} else {return nullptr;} }3.4.实现享元工厂类 // 享元工厂 class DanceMoveFactory {public:// 获取舞蹈动作std::shared_ptrDanceMove getDanceMove(const std::string type) {auto it danceMoveMap_.find(type);if (it ! danceMoveMap_.end()) {return it-second;} else {// 创建动作std::shared_ptrDanceMove danceMove createDanceMove(type);if (danceMove) {danceMoveMap_[type] danceMove;return danceMove;} else {throw std::runtime_error(Dance move type not recognized: type);}}}private:std::unordered_mapstd::string, std::shared_ptrDanceMove danceMoveMap_; };3.5.客户端代码 // 客户端代码 int main() {DanceMoveFactory factory;try {// 获取并执行舞蹈动作auto raiseHand factory.getDanceMove(RaiseHand);raiseHand-execute();auto turnAround factory.getDanceMove(TurnAround);turnAround-execute();auto kickLeg factory.getDanceMove(KickLeg);kickLeg-execute();// 再次获取舞蹈动作验证是否共享了相同类型的动作对象auto raiseHand2 factory.getDanceMove(RaiseHand);raiseHand2-execute();std::cout raiseHand address: raiseHand.get() std::endl;std::cout raiseHand2 address: raiseHand2.get() std::endl;// 尝试获取未注册的舞蹈动作auto unknownMove factory.getDanceMove(UnknownMove);unknownMove-execute();} catch (const std::exception e) {std::cerr Error: e.what() std::endl;}return 0; }
http://www.w-s-a.com/news/816851/

相关文章:

  • 招聘网站如何建设中国计算机网络公司排名
  • 工信部网站备案规定厦门在线制作网站
  • 商丘网站公司智联招聘手机app下载
  • 江西专业南昌网站建设中国专业的网站建设
  • 物流企业网站建设方案招标网站有哪些
  • 网站建设服务中企动力建筑工程网络进度计划备注填写范例
  • 电子商务网站开发与建设试卷php网站开发专业
  • 运城网站制作路90江苏省网站备案系统
  • 唐山做企业网站实体门店管理系统
  • 网站优化推广教程深圳网站建设世纪前线
  • 网站建设专家哪家好兰州网络推广执行
  • 广东住房和城乡建设厅网站王芃增加网站收录
  • 北京网站建设手机app电子商务网红营销的劣势
  • 网站 营销型wordpress获取4条文章标题
  • 浦东区建设工程监督网站建立全国统一的突发事件信息系统
  • 做网站需要基础吗重庆市造价信息网
  • 我要建设公司网站大连培训网站建设
  • 网站建设校长信箱设计方案小程序报价开发
  • 电子网站建设ppt模板营销策划方案怎么写?
  • 什么网站收录排名最高济南能源建设网站
  • 深圳移动网站建设公司价格桂林做网站哪家公司好
  • 互联网网站名字网站合作建设合同
  • 舟山高端网站设计广州优化排名推广
  • 哪个网站做免费广告好上海人才网站
  • cn域名做网站竞价推广代理
  • 省建设干部培训中心网站网站地图1 500 怎么做
  • 制作一个网站需要哪些人网站建设经营服务合同
  • 山东省住房和城乡建设厅官方网站网易发布广州
  • 长沙设计网站效果设计师灵感网站
  • 做网站php都用什么框架把asp.net写的网站别人怎么访问