行为型模型 策略模式
Strategy:
策略(算法)抽象。
ConcreteStrategy
各种策略(算法)的具体实现。
Context
策略的外部封装类,或者说策略的容器类。根据不同策略执行不同的行为。策略由外部环境决定。
好处:
//算法的实现 和 客户端的使用 解耦合
//使得算法变化,不会影响客户端
适用于:
准备一组算法,并将每一个算法封装起来,使得它们可以互换。
/** * 行为型模型 策略模式 * Strategy模式也叫策略模式是行为模式之一,它对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交由客户端决定(策略)。Strategy模式主要用来平滑地处理算法的切换 。 * */ #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #include <list> class Strategy { public: virtual void SymEncrypt() = 0; virtual ~Strategy() {} }; class Des: public Strategy { public: virtual void SymEncrypt() override { std::cout << "DES 加密" << std::endl; } }; class Aes: public Strategy { public: virtual void SymEncrypt() override { std::cout << "AES 加密" << std::endl; } }; class Context { public: Context(Strategy * strategy) { p = strategy; } void Operator() { p->SymEncrypt(); } private: Strategy *p; }; void mytest() { Strategy * strategy = nullptr; Context *ctx = nullptr; strategy = new Des(); ctx = new Context(strategy); ctx->Operator(); delete strategy; strategy = nullptr; delete ctx; ctx = nullptr; strategy = new Aes(); ctx = new Context(strategy); ctx->Operator(); delete strategy; strategy = nullptr; delete ctx; ctx = nullptr; return; } int main() { mytest(); system("pause"); return 0; }
时间: 2024-10-29 11:40:26