设计模式-Template(行为模式) 采用 继承的方式 将算法封装在抽象基类中,在子类中实现细节。利用面向对象中的多态实现算法实现细节和高层接口的松耦合。

Posted fourmi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式-Template(行为模式) 采用 继承的方式 将算法封装在抽象基类中,在子类中实现细节。利用面向对象中的多态实现算法实现细节和高层接口的松耦合。相关的知识,希望对你有一定的参考价值。

以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码

//Template.h

class AbstractClass
{
public:
    virtual ~AbstractClass();
    void TemplateMethod();
protected:
    virtual void PrimitiveOperation1() = 0;
    virtual void PrimitiveOperation2() = 0;
    AbstractClass();
private:
};

class ConcreateClass1 :public AbstractClass
{
public:
    ConcreateClass1();
    virtual ~ConcreateClass1();
protected:
    void PrimitiveOperation1();
    void PrimitiveOperation2();
private:

};

class ConcreateClass2 :public AbstractClass
{
public:
    ConcreateClass2();
    virtual ~ConcreateClass2();
protected:
    void PrimitiveOperation1();
    void PrimitiveOperation2();
private:
};

//Template.cpp

#include"Template.h"
#include<iostream>

AbstractClass::AbstractClass(){}
AbstractClass::~AbstractClass(){}
void AbstractClass::TemplateMethod()
{
    this->PrimitiveOperation1();
    this->PrimitiveOperation2();
}
ConcreateClass1::ConcreateClass1(){}
ConcreateClass1::~ConcreateClass1(){}
void ConcreateClass1::PrimitiveOperation1()
{
    std::cout << "ConcreateClass1 ...PrimitiveOperation1" << std::endl;
}
void ConcreateClass1::PrimitiveOperation2()
{
    std::cout << "ConcreateClass1 ... PrimitiveOperation2" << std::endl;
}

ConcreateClass2::ConcreateClass2(){}
ConcreateClass2::~ConcreateClass2(){}
void ConcreateClass2::PrimitiveOperation1()
{
    std::cout << "ConcreateClass2 ... PrimitiveOperation1" << std::endl;
}

void ConcreateClass2::PrimitiveOperation2()
{
    std::cout << "ConcreateClass2 ... PrimitiveOperation2" << std::endl;
}

//main.cpp

#include"Template.h"
#include<iostream>
#include<string>

int main(int args, char* argv)
{
    ConcreateClass1* p1 = new ConcreateClass1();
    ConcreateClass2* p2 = new ConcreateClass2();
    p1->TemplateMethod();
    p2->TemplateMethod();
    getchar();
    return 0;
}

以上是关于设计模式-Template(行为模式) 采用 继承的方式 将算法封装在抽象基类中,在子类中实现细节。利用面向对象中的多态实现算法实现细节和高层接口的松耦合。的主要内容,如果未能解决你的问题,请参考以下文章

设计模式-行为型模式-模板方法模式(Template Method)

设计模式(22)--Template Method(模板方法模式)--行为型

004-行为型-02-模板方法模式(Template Method)

JAVA设计模式(17):行为型-模板方法模式(Template Method)

JAVA SCRIPT设计模式--行为型--设计模式之Template Method模板方法(22)

JAVA SCRIPT设计模式--行为型--设计模式之Template Method模板方法(22)