• 行为型模型 策略模式


    行为型模型 策略模式

    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;
    }
  • 相关阅读:
    JavaScript内存泄漏(转)
    深入理解JavaScript的变量作用域(转)
    Spring MVC 配置(备忘)
    French fashion in Paris
    Windows Server 2003、 WindowsXP, 中和 Windows 2000 中的缓存凭据安全
    doc.txt.exe病毒。
    Exchange server 增加RBL
    无以穷尽的工作。。。
    windows SBS Exchange 数据库恢复
    VLAN介绍
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/7782948.html
Copyright © 2020-2023  润新知