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

时间:2020-05-17
本文章向大家介绍软件工程-Template模式、类适配器、对象适配器的C++实现,主要包括软件工程-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

原文地址:https://www.cnblogs.com/acmer-hmin/p/12903983.html