模板方法模式
2020 年 09 月 07 日 219 280 字 暂无评论

01.概念

  • Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。

02.角色和职责

  • AbstractClass:

    • 抽象类的父类
  • ConcreteClass:

    • 具体的实现子类
  • templateMethod():

    • 模板方法
  • method1()与method2():

    • 具体步骤方法

03.应用场景

  • Template Method模式一般应用在具有以下条件的应用中:

    • 具有统一的操作步骤或操作过程
    • 具有不同的操作细节
    • 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同
  • 总结:

    • 在抽象类中统一操作步骤,并规定好接口;让子类实现接口。这样可以把各个具体的子类和操作步骤接耦合

04.代码案例

#include <iostream>

using namespace std;

class MakeCar
{
public:
        virtual void makeHead() = 0;
        virtual void makeBody() = 0;
        virtual void makeTail() = 0;
        void make()
        {
                makeHead();
                makeBody();
                makeTail();
        }
private:
};

class MakeBus : public MakeCar
{
public:
        virtual void makeHead()
        {
                cout << "bus 组装 车头" << endl;
        }
        virtual void makeBody()
        {
                cout << "bus 组装 车身" << endl;
        }
        virtual void makeTail()
        {
                cout << "bus 组装 车尾" << endl;
        }
private:
};

class MakeJeep : public MakeCar
{
public:
        virtual void makeHead()
        {
                cout << "Jeep 组装 车头" << endl;
        }
        virtual void makeBody()
        {
                cout << "Jeep 组装 车身" << endl;
        }
        virtual void makeTail()
        {
                cout << "Jeep 组装 车尾" << endl;
        }
private:
};


int main()
{
        MakeCar* bus = new MakeBus;
        bus->make();
        cout << "-----------------------" << endl;
        MakeCar* jeep = new MakeJeep;
        jeep->make();

        delete bus;
        delete jeep;
        return 0;
}
  • 输出
bus 组装 车头
bus 组装 车身
bus 组装 车尾
-----------------------
Jeep 组装 车头
Jeep 组装 车身
Jeep 组装 车尾

下面没有了~


版权属于:zfh

本文链接:http://zfhblog.com/index.php/archives/140/



评论已关闭