• 软件工程-Template模式、类适配器、对象适配器的C++实现


    Template模式、类适配器、对象适配器的C++实现

    1、Template:

             

    C++实现代码:

    #include <bits/stdc++.h>
    using namespace std;
    class AbstractClass
    {
    public:
        void TemplateMethod()
        {
            cout<<"PrimitiveOper1() Start"<<endl;
            PrimitiveOper1();
            cout<<"PrimitiveOper1() End"<<endl;
    
            cout<<"PrimitiveOper2() Start"<<endl;
            PrimitiveOper2();
            cout<<"PrimitiveOper2() End"<<endl;
        }
    protected:
        virtual void PrimitiveOper1()
        {
            cout<<"AbstractClass oper1"<<endl;
        }
        virtual void PrimitiveOper2()
        {
            cout<<"AbstractClass oper2"<<endl;
        }
    };
    class ConcreteClass:public AbstractClass
    {
    protected:
        virtual void PrimitiveOper1()
        {
            cout<<"ConcreteClass Oper1"<<endl;
        }
        virtual void PrimitiveOper2()
        {
            cout<<"ConcreteClass Oper2"<<endl;
        }
    };
    int main() {
        AbstractClass * pa=new ConcreteClass();
        pa->TemplateMethod();
        if(pa)
            delete pa;
        return 0;
    }
    View Code

    2、类适配器

            

     C++实现代码:

    #include <bits/stdc++.h>
    using namespace std;
    class Target
    {
    public:
        virtual void Request()
        {
            cout<<"Target::Request"<<endl;
        }
    };
    class Adaptee
    {
    public:
        void SpecificRequest()
        {
            cout<<"Adaptee::SpecificRequest"<<endl;
        }
    };
    class Adapter:public Target,Adaptee
    {
    public:
        void Request()
        {
            Adaptee::SpecificRequest();
        }
    };
    int main() {
        Target *pt=new Adapter();
        pt->Request();
        if(pt)
            delete pt;
        return 0;
    }
    View Code

    3、对象适配器

            

    C++实现代码:

    #include <bits/stdc++.h>
    using namespace std;
    class Target
    {
    public:
        Target(){}
        virtual void Request()
        {
            cout<<"Target::Request"<<endl;
        }
    };
    class Adaptee
    {
    public:
        void SpecificRequest()
        {
            cout<<"Adaptee::SpecificRequest"<<endl;
        }
    };
    class Adapter:public Target,Adaptee
    {
    public:
        Adapter():m_adaptee(new Adaptee){}
        ~Adapter()
        {
           if(m_adaptee!=NULL)
           {
               delete m_adaptee;
           }
        }
        void Request()
        {
            m_adaptee->SpecificRequest();
        }
    private:
        Adaptee *m_adaptee;
    };
    int main() {
        Target *pt=new Adapter();
        pt->Request();
        if(pt)
            delete pt;
        return 0;
    }
    View Code
  • 相关阅读:
    【一句日历】2020年3月
    写给我们项目总监的一些话
    基于ajax 的 几个例子 session ,ajax 实现登录,验证码 ,实现ajax表单展示
    day 51 随机验证码, 验证登陆 ,以及 装饰器在函数中的应用
    day 51 cooike 与 session
    day 50 AJAX 初入门
    day 38 jq 入门 学习(一)
    转的大佬的 学习方法
    day 49 数据分析, 数据聚合 F 查询 Q 查询
    day 48 ORM 进阶 多表连接 创建 以及 html模板继承
  • 原文地址:https://www.cnblogs.com/acmer-hmin/p/12903983.html
Copyright © 2020-2023  润新知