行为型模型 策略模式
2017-11-04 11:54
253 查看
行为型模型 策略模式
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; }
相关文章推荐
- 九、策略模式Strategy(行为型模式)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- java设计模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式,。 行为型模式,共十一种:策略模式、模板方法)
- 设计模式(十三)策略模式(Strategy)-行为型
- JAVA设计模式(16):行为型-策略模式(Strategy)
- 设计模式笔记 22. Strategy 策略模式(行为型模式)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 行为型模型 中介者模式
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 行为型模式: 策略模式
- 设计模式-策略模式---Strategy(对象行为型)
- 行为型模式-策略
- 设计模式之行为型策略模式
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- 设计模式-行为型模式-策略模式
- 行为型模式之策略模式(java版)
- 设计模式(行为型模式) -----策略模式
- "围观"设计模式(20)--行为型之策略模式(Strategy Pattern)
- 设计模式(4)-行为型-策略模式(Strategy)