zoukankan      html  css  js  c++  java
  • 行为型模型 策略模式

    行为型模型 策略模式

    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;
    }
  • 相关阅读:
    android SearchView配置
    把cmd命令行制作成bat程序文件
    2020 rou-yi开源框架后台运行
    android studio 干净卸载手机app只需三步
    android textview 部分内容的颜色字体修改
    16进制颜色编码-透明色
    数据结构——二叉查找树
    Java中的集合(一)——集合接口
    Effective Java阅读笔记——创建和销毁对象(一)
    数据结构——二叉树
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/7782948.html
Copyright © 2011-2022 走看看