【设计模式】 策略模式

这篇具有很好参考价值的文章主要介绍了【设计模式】 策略模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,将每个算法封装起来,使它们可以相互替换,让客户端代码和算法的具体实现解耦。这样,客户端可以根据不同的需求选择不同的算法,而无需修改原有的代码。

C 实现策略模式

#include <stdio.h>
#include <stdlib.h>

// 定义策略接口
typedef struct {
    void (*execute)(void);
} Strategy;

// 具体策略1
void strategy1_execute(void) {
    printf("Executing Strategy 1\n");
}

// 具体策略2
void strategy2_execute(void) {
    printf("Executing Strategy 2\n");
}

// 客户端代码,使用策略接口
void client_code(Strategy* strategy) {
    strategy->execute();
}

int main() {
    // 创建策略对象
    Strategy* strategy1 = (Strategy*)malloc(sizeof(Strategy));
    strategy1->execute = strategy1_execute;

    Strategy* strategy2 = (Strategy*)malloc(sizeof(Strategy));
    strategy2->execute = strategy2_execute;

    // 使用不同的策略
    client_code(strategy1);
    client_code(strategy2);

    // 释放内存
    free(strategy1);
    free(strategy2);

    return 0;
}

C++ 实现策略模式

#include <iostream>

// 定义策略接口
class Strategy {
public:
    virtual void execute() = 0;
    virtual ~Strategy() {}
};

// 具体策略1
class Strategy1 : public Strategy {
public:
    void execute() override {
        std::cout << "Executing Strategy 1" << std::endl;
    }
};

// 具体策略2
class Strategy2 : public Strategy {
public:
    void execute() override {
        std::cout << "Executing Strategy 2" << std::endl;
    }
};

// 客户端代码,使用策略接口
void client_code(Strategy* strategy) {
    strategy->execute();
}

int main() {
    // 使用不同的策略
    Strategy1 strategy1;
    Strategy2 strategy2;

    client_code(&strategy1);
    client_code(&strategy2);

    return 0;
}

策略模式的优缺点

优点:

灵活性增强:策略模式使得算法独立于客户端使用而变化。可以在运行时动态选择算法,灵活应对不同的需求和场景。
代码重用:各个策略可以被多个客户端共享,避免了代码重复。
扩展性良好:当需要添加新的算法时,只需增加新的策略类,而不需要修改已有的代码。
易于测试:由于策略类封装了具体的算法,因此易于进行单元测试。

缺点:

增加类数量:每个具体策略都需要一个对应的类,如果策略较多,可能会增加类的数量,增加代码维护的复杂性。
客户端必须了解策略:客户端代码必须了解所有的策略,以便进行选择,如果策略较多,可能会增加客户端代码的复杂性。
总体来说,策略模式适用于需要在运行时动态选择算法,并且希望算法和客户端代码解耦的情况。对于简单的情况,可能没有必要使用策略模式,但在复杂的场景下,它可以带来更好的可维护性和可扩展性。文章来源地址https://www.toymoban.com/news/detail-619902.html

到了这里,关于【设计模式】 策略模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【设计模式】 策略模式

    策略模式 (Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,将每个算法封装起来,使它们可以相互替换,让客户端代码和算法的具体实现解耦。这样,客户端可以根据不同的需求选择不同的算法,而无需修改原有的代码。 灵活性增强 :策略模式使得算法独立于

    2024年02月14日
    浏览(45)
  • 设计模式:策略模式

    策略模式(Strategy Pattern)是一种行为型设计模式,它允许在运行时根据不同的情况选择不同的算法或行为。策略模式通过将算法封装成独立的策略类,使得它们可以互相替换,而不影响客户端的使用。 在策略模式中,有三个核心组件: 策略接口(Strategy Interface):定义了策

    2024年02月07日
    浏览(43)
  • 设计模式--策略模式

    目录 一.场景 1.1场景 2.2 何时使用  2.3个人理解 二. 业务场景练习  2.1业务: 2.2具体实现 2.3思路   三.总结 3.1策略模式的特点:  3.2策略模式优点 3.3策略模式缺点 1.1场景 许多相关的类仅仅是行为有异,也就是说业务代码需要根据场景不同,切换不同的实现逻辑 一个类定义了

    2024年02月13日
    浏览(41)
  • 设计模式——策略模式

    定义: 该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把便用算法的责任和算法的实现分割开来,并委派给不算法进象行管理。 主要角色如下: 示例: 假定现在需要

    2024年02月22日
    浏览(39)
  • 《设计模式》策略模式

    定义 : 又叫作 政策模式,将定义的一系列算法封装起来,使得它们之间可以互相替换,从而让算法的变化不影响到使用算法的用户 。 属于 行为型 模式。 策略模式的组成角色 : 环境类(Context) : 环境类是使用算法的角色 ,用来操作策略的上下文环境,屏蔽高层模块(客户

    2024年02月01日
    浏览(45)
  • 设计模式—策略模式

    目录 一、定义 二、特点 三、优点 四、缺点 五、实例 六.涉及到的知识点 1、一个类里面有哪些东西? 2、类和实例 什么是类? 什么是实例? 什么是实例化? 3、字段和属性 什么是字段? 属性是什么? 属性怎么用呢? 属性有什么作用? 静态属性是什么? 属性和字段的公有

    2024年02月10日
    浏览(53)
  • 设计模式-策略模式 Strategy

    该模式最常见的应用场景是,利用它来避免冗长的 if-else 或 switch 分支判断。不过,它的作用还不止如此。它也可以像模板模式那样,提供框架的扩展点等等。 策略模式,英文全称是 Strategy Design Pattern。该模式是这样定义的: Define a family of algorithms, encapsulate each one, and make

    2024年02月20日
    浏览(44)
  • 【设计模式--行为型--策略模式】

    定义 该模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分隔开,并委派给不同的对象对这些算法进行管理。 结构 抽象策略

    2024年02月04日
    浏览(39)
  • 【设计模式 行为型】策略模式

    它允许在运行时根据需要选择算法的行为。该模式通过将算法封装成独立的类,使得它们可以相互替换,而不影响使用算法的客户端代码。 策略模式主要包含以下角色: 环境(Context):环境对象持有一个策略对象的引用,它提供了一个接口用于执行具体的算法。 抽象策略(

    2024年01月20日
    浏览(37)
  • 设计模式再探——策略模式

    最近在做产品的过程中,对于主题讨论回复内容,按照追评次数排序、点赞排序、时间排序等内容做了深入研究,通过策略模式可以很好的进行优化。 1.策略模式简介 2.策略模式的类图 3.策略模式代码 4.策略模式还可以优化的地方 5.策略模式的例子改造 策略模式:它定义了算

    2024年02月13日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包