做服装网站,华强北ic网站建设,网站加入百度地图,人力资源六大模块本文章属于专栏- 概述 - 《设计模式#xff08;极简c版#xff09;》-CSDN博客 本章简要说明适配器模式。本文分为模式说明、本质思想、实践建议、代码示例四个部分。
模式说明
方案#xff1a;策略模式是一种行为设计模式#xff0c;它定义了一系列算法#xff0c;将每… 本文章属于专栏- 概述 - 《设计模式极简c版》-CSDN博客 本章简要说明适配器模式。本文分为模式说明、本质思想、实践建议、代码示例四个部分。
模式说明
方案策略模式是一种行为设计模式它定义了一系列算法将每个算法封装起来并使它们可以相互替换使得算法可以独立于使用它的客户端而变化。优点 灵活性客户端可以根据需要选择不同的算法。可维护性算法的变化不会影响到客户端的实现易于扩展和维护。缺点 客户端必须了解所有的策略类客户端需要知道所有可用的策略类可能增加了耦合度
本质思想策略模式通过将算法封装成独立的策略类使得这些算法可以相互替换客户端可以根据需求选择不同的策略。
实践建议如果算法模块是一个团队开发的让算法团队提供统一接口以减少服务端和策略部分耦合。如果算法模块是多个团队开发应该是服务端同学根据多个算法模块的语意使用策略模式让算法模块易于使用。 代码示例
#include iostream// 策略接口
class FlyBehavior {
public:virtual void fly() 0;
};// 具体策略飞行行为1
class FlyWithWings : public FlyBehavior {
public:void fly() override {std::cout Im flying with wings! std::endl;}
};// 具体策略飞行行为2
class FlyNoWay : public FlyBehavior {
public:void fly() override {std::cout I cant fly! std::endl;}
};// 策略模式的上下文即使用策略的类
class Bird {
protected:FlyBehavior *flyBehavior;public:void setFlyBehavior(FlyBehavior *fb) {flyBehavior fb;}virtual void performFly() {flyBehavior-fly();}
};// 具体的鸟类
class Sparrow : public Bird {
public:Sparrow() {// 默认使用飞行行为1flyBehavior new FlyWithWings();}
};int main() {Sparrow sparrow;sparrow.performFly(); // 输出Im flying with wings!FlyNoWay fnw;sparrow.setFlyBehavior(fnw);sparrow.performFly(); // 输出I cant fly!return 0;
}