做某网站的设计与实现,深圳做外贸网站公司,直播网站开发框架,成都软件开发外包策略模式
前言
先了解一下设计模式的几种类似#xff1a;
行为型设计模式#xff08;Behavioral Design Pattern#xff09;是指一组设计模式#xff0c;它们关注的是对象之间的通信和协作。行为型设计模式描述了对象之间的职责分配和算法的封装#xff0c;以及如何在运…策略模式
前言
先了解一下设计模式的几种类似
行为型设计模式Behavioral Design Pattern是指一组设计模式它们关注的是对象之间的通信和协作。行为型设计模式描述了对象之间的职责分配和算法的封装以及如何在运行时动态改变对象的行为。它们的目的是提高系统的灵活性和可复用性使系统更易于扩展和维护。行为型设计模式通常包括以下几种 模板方法模式Template Method Pattern策略模式Strategy Pattern观察者模式Observer Pattern迭代器模式Iterator Pattern责任链模式Chain of Responsibility Pattern命令模式Command Pattern访问者模式Visitor Pattern备忘录模式Memento Pattern状态模式State Pattern中介者模式Mediator Pattern解释器模式Interpreter Pattern 创建型设计模式主要关注对象的创建过程包括将对象的创建过程抽象化、封装和解耦等。常见的创建型设计模式包括工厂方法模式、抽象工厂模式、单例模式、建造者模式和原型模式。结构型设计模式主要关注对象的组合方式包括对象之间的组合方式、类之间的组合方式等。常见的结构型设计模式包括适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式。
策略模式是一种行为型设计模式它定义了一系列算法将每个算法都封装起来并且使它们之间可以互换。策略模式让算法的变化独立于使用算法的客户。
正文
策略模式的优点包括
可以方便地增加新的算法因为每个算法都被封装到了自己的类中新增加一个算法只需要添加一个新的类就可以了。可以方便地切换算法因为算法之间被解耦所以可以方便地切换算法。可以方便地扩展算法因为每个算法都被封装到了自己的类中所以可以方便地扩展算法。可以减少代码重复因为算法之间可以共享代码。可以方便地测试算法因为每个算法都被封装到了自己的类中所以可以方便地测试算法。
总之策略模式可以提高代码的灵活性、可扩展性和可维护性。它的应用范围很广可以用于各种算法的封装和应用。
#include iostream
#include vector// 抽象策略类
class Strategy {
public:virtual void execute() 0;
};// 具体策略类A
class ConcreteStrategyA : public Strategy {
public:virtual void execute() {std::cout 执行策略A std::endl;}
};// 具体策略类B
class ConcreteStrategyB : public Strategy {
public:virtual void execute() {std::cout 执行策略B std::endl;}
};// 上下文类
class Context {
public:void setStrategy(Strategy* strategy) {m_strategy strategy;}void executeStrategy() {if (m_strategy ! nullptr) {m_strategy-execute();}}private:Strategy* m_strategy;
};int main() {// 创建策略对象ConcreteStrategyA strategyA;ConcreteStrategyB strategyB;// 创建上下文对象Context context;// 执行策略Acontext.setStrategy(strategyA);context.executeStrategy();// 执行策略Bcontext.setStrategy(strategyB);context.executeStrategy();return 0;
}在上面的代码中我们定义了一个抽象策略类 Strategy以及两个具体的策略类 ConcreteStrategyA 和 ConcreteStrategyB。这些策略类都实现了 execute 方法用于执行具体的策略。
我们还定义了一个上下文类 Context它包含一个成员变量 m_strategy用于保存当前使用的策略对象。Context 类有两个方法setStrategy 和 executeStrategy分别用于设置当前使用的策略对象和执行策略。
在 main 函数中我们创建了两个具体的策略对象 strategyA 和 strategyB以及一个上下文对象 context。我们首先将上下文对象的策略设置为 strategyA然后调用 executeStrategy 方法执行策略。接着我们将上下文对象的策略设置为 strategyB再次执行策略。
这个示例中策略模式的核心思想就是将具体的算法实现封装到不同的策略类中通过上下文对象来控制使用哪个策略。这样我们就可以在运行时动态地切换不同的策略从而实现灵活的算法组合。