zoukankan      html  css  js  c++  java
  • 策略模式学习(设计模式)

    策略模式包含如下基本要素,策略基类,继承于基类的不同算法,包含策略引用的环境(context)角色

     class vehicle;

    class vehicle
    {
    public:
        vehicle(){};
        ~vehicle(){};
        virtual void showName()=0;
    };

    class bike:public vehicle
    {
    public:
        bike(){};
        ~bike(){};
        void showName()
        {
            std::cout<<"go by bike!"<<endl;
        }
    };

    class car:public vehicle
    {
    public:
        car(){};
        ~car(){};
        void showName()
        {
            std::cout<<"go by car!"<<endl;
        }
    };

    class trip
    {
    public:
        trip(vehicle *pv):m_pv(pv){};
        ~trip()
        {
            delete m_pv;
            m_pv = NULL;
        };
        void showVehicle()
        {
            m_pv->showName();
        }
    private:
        vehicle * m_pv;
    };

    void main()
    {
        trip* t1 = new trip(new car());
        t1->showVehicle();
        cin.get();
    }

    当然也可以通过函数指针实现

    typedef void(*pfun)(void);

    void gobyBike()
    {
        std::cout<<"go by bike!"<<endl;
    }

    void gobycar()
    {
        std::cout<<"go by car!"<<endl;
    }

    class trip
    {
    public:
        trip(pfun pf):mfunction(pf){};
        ~trip()
        {
        };
        void showVehicle()
        {
            mfunction();
        }
    private:
        pfun  mfunction;
    };

    void main()
    {
        trip* t1 = new trip(gobycar);
        t1->showVehicle();
        delete t1;
        cin.get();
    }

    忙里偷闲边看边练习一下

  • 相关阅读:
    从0开始的Python学习013编写一个Python脚本
    Spring Cloud Eureka基本概述
    RocketMQ入门案例
    Quartz使用记录总结
    Spring Boot 1.5升级2.1 主要问题汇总
    Eureka客户端注册多网卡下IP选择问题
    Spring Security之动态配置资源权限
    代码规范问题
    Spring Security + OAuth系统环境搭建(一)
    Java并发编程之AQS
  • 原文地址:https://www.cnblogs.com/doulcl/p/11705869.html
Copyright © 2011-2022 走看看