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

自己建立的网站互联网平台搭建

自己建立的网站,互联网平台搭建,网络营销平台排名,厦门 微网站制作核心思想 策略模式是一种行为型设计模式#xff0c;它定义了一系列算法#xff0c;并将每个算法封装在独立的类中#xff0c;使得它们可以互相替换。策略模式让算法的变化独立于使用它的客户端#xff0c;从而使得客户端可以根据需要动态切换算法#xff0c;而不需要修改…核心思想 策略模式是一种行为型设计模式它定义了一系列算法并将每个算法封装在独立的类中使得它们可以互相替换。策略模式让算法的变化独立于使用它的客户端从而使得客户端可以根据需要动态切换算法而不需要修改其代码。策略模式的核心是将算法与使用算法的客户端解耦使得算法可以独立于客户端变化。 **Context**持有一个策略对象的引用负责调用策略的具体实现。 **Strategy**定义所有支持的算法的公共接口。 **ConcreteStrategy**实现Strategy接口提供具体的算法实现。 使用场景 多种算法切换如排序算法快速排序、冒泡排序等或支付方式信用卡、支付宝等。 避免条件语句当代码中有大量条件分支用于选择不同行为时可以用策略模式替代。 算法复用当多个类需要共享相同的行为但行为的具体实现不同时。 动态切换行为如游戏中的角色在不同状态下使用不同的攻击策略。 测试与调试策略模式可以方便地替换算法的实现便于测试和调试。 解决的问题 代码重复问题 如果多个类使用相同的算法但算法的实现分散在各处会导致代码重复。策略模式将算法集中管理避免重复。 紧耦合问题 在传统设计中算法直接嵌入在客户端代码中导致客户端与算法紧耦合。策略模式通过将算法抽象为接口解耦了客户端和具体算法。 扩展性问题 新增算法时需要修改客户端代码。策略模式允许动态添加新算法而无需修改现有代码。 条件分支问题 当代码中有大量条件分支用于选择不同行为时策略模式可以将其替换为对象的多态调用使代码更清晰。 优点 **开闭原则**新增算法无需修改现有代码只需添加新的策略类。 **解耦**将算法的实现与使用分离提高代码的灵活性和可维护性。 **复用性**策略类可以在不同上下文中复用。 **简化测试**每个策略类可以独立测试。 缺点 **类数量增加**每个算法都需要一个单独的类可能导致类的数量增多。 **客户端需要了解策略**客户端需要知道有哪些策略并选择合适的策略。 **性能开销**策略模式可能引入额外的对象创建和调用开销。 示例代码 如下代码中Context类即客户端是稳定、可以不变的变化的是策略而策略是根据运行时的实际情况来选择的。通过继承Strategy类并重写execute()接口实现策略的扩展。 #include iostream #include memory// 抽象策略接口 class Strategy { public:virtual void execute() const 0;virtual ~Strategy() default; // 虚析构函数确保正确释放资源 };// 具体策略A class ConcreteStrategyA : public Strategy { public:void execute() const override {std::cout 执行策略A std::endl;} };// 具体策略B class ConcreteStrategyB : public Strategy { public:void execute() const override {std::cout 执行策略B std::endl;} };// 上下文类持有策略对象并调用其方法 class Context { private:std::unique_ptrStrategy strategy; // 使用智能指针管理策略对象public:// 构造函数允许传入策略对象Context(std::unique_ptrStrategy s) : strategy(std::move(s)) {}// 设置策略void setStrategy(std::unique_ptrStrategy s) {strategy std::move(s);}// 执行策略void executeStrategy() const {if (strategy) {strategy-execute();} else {std::cout 未设置策略 std::endl;}} };int main() {// 创建上下文对象并初始化为策略AContext context(std::make_uniqueConcreteStrategyA());context.executeStrategy(); // 输出: 执行策略A// 动态切换到策略Bcontext.setStrategy(std::make_uniqueConcreteStrategyB());context.executeStrategy(); // 输出: 执行策略Breturn 0; }代码说明 ​Strategy抽象策略接口定义了所有具体策略类必须实现的方法execute()。 ​ConcreteStrategyA​ 和 ​ConcreteStrategyB具体策略类分别实现了不同的算法或行为。 ​Context上下文类持有一个策略对象的引用并提供了设置策略和执行策略的方法。 ​智能指针使用std::unique_ptr管理策略对象的生命周期避免内存泄漏。 运行结果 执行策略A 执行策略B总结 通过策略模式我们可以将算法的实现与使用算法的环境解耦使得算法可以独立于客户端代码进行扩展和修改。这种设计模式特别适用于需要动态切换算法的场景。
http://www.dnsts.com.cn/news/27896.html

相关文章:

  • 做网站超链接哪些网站做机票酒店有优势
  • 响应式网页网站设计苍南网站制作
  • 江门高端网站建设左右左右网站
  • 建站平台费用个人博客登录入口
  • wordpress 置顶标签求职seo
  • 备案网站名称怎么写个人企业建网站的工作
  • 专业做网站排名的人品牌网站建设教程
  • 南宁网站制作费用邢台专业网站建设源码
  • 河南郑州建设网站制作免费可信网站认证
  • 公共服务网站系统建设方案wordpress用户等级
  • 上海网站开发与设计WordPress ngrok
  • 淘宝怎么做网站北京门户网站制作
  • 建设农产品网站总结ppt模板织梦网站301重定向
  • 西安百度网站快速排名文娱热搜榜
  • 网站首页是什么code snippet wordpress
  • cn网站怎么做网站建设十
  • 展示型网站一样做seo优化网站的布局方式有哪些方面
  • 政务网站开发理念wordpress联系方式代码
  • 交互做的不好的网站分类信息网站推广的意义
  • 网站预订功能怎么做全网vip影视网站一键搭建
  • vi设计的概念做网站需要找人优化吗
  • 广州市花都区网站建设公司广告公司策划案
  • 网站开发后台编辑系统网站备案更改吗
  • 2015做啥网站能致富迁移WordPress后无法访问
  • 站长工具seo综合查询官网合肥优化网站
  • 手机能建设网站吗龙口市规划建设局网站
  • wordpress建站视屏asp网站后台密码破解
  • 常州 做网站百度指数做网站
  • 兼职20网站开发微信推广怎么弄
  • 网站的建设参考文献用电脑做服务器搭建php网站