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

免费商城网站建站系统建设跳转公积金网站

免费商城网站建站系统,建设跳转公积金网站,南宁seo推广公司,自己制作网页的网站核心思想 策略模式是一种行为型设计模式#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.tj-hxxt.cn/news/217663.html

相关文章:

  • 求网站建设的视频教程南京中企动力有限公司
  • 网站建设的现状和未来专门做美食的网站6
  • 网站的一般制作流程html电影网站模板下载
  • 用asp做网站怎么美观建设部评职称网站
  • 电子商务网站建设实训室简介石家庄网站建设方案
  • 东莞网推广网站建设html底部友情链接代码
  • 电子商务平台 网站 建设方式短链接生成器下载
  • 网站新闻审核怎么做咸阳高端网站建设
  • 零基础做网站网站制作设计收费标准
  • wordpress 导航站949公社招聘信息
  • 单位门户网站怎么做wordpress docker中文
  • 网咯鸟深圳网站建设衡水企业网站建设费用
  • 一诺千金 网站建设wordpress设置关站
  • 做网站挣钱打擦边球wordpress主题模仿
  • 电子商务网站建设课程的心得如何做关于网站推广的培训
  • html5 网站开发wordpress djd site post
  • 网站排名优化提升快速网站建设找谁做
  • 个人网站建设安全怎么做广告图片设计
  • 商丘企业网站建设公司北京网站建设上石榴汇
  • 东营市城乡建设局网站在线网站建设课程
  • 深圳网站建设公司哪里有广告设计网站都有哪些
  • 山东济南网站建设公司排名三位数的域名网站
  • 濮阳网站开发刷关键词排名seo
  • 网站搭建哪里找有名气做网站图片用什么格式最好
  • 做家政网上推广网站网站的整体风格包括
  • 外贸网站推广方法毕业设计指导网站开发
  • 哪里有做网站的团购网站怎么推广
  • 织梦 蓝色 个人网站博客网站源码怎么分析网站设计
  • 做网站定金是多少重庆建设招标网站
  • 电商网站开发教材网站为什么突然访问不了