行为型模型 模版模式

Posted 云水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了行为型模型 模版模式相关的知识,希望对你有一定的参考价值。

行为型模型 模版模式

 

应用场景

Template Method模式一般应用在具有以下条件 的应用中:
        - 具有统一的操作步骤或操作过程
        - 具有不同的操作细节
        - 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同
总结:
        在抽象类中统一操作步骤,并规定好接口;让子类实现接口。这样可以把各个具体的子类和操作步骤接耦合

 

 

AbstractClass:
        抽象类的父类
ConcreteClass:
        具体的实现子类
templateMethod():
        模板方法
method1()与method2():
        具体步骤方法

 

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

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <string>

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

    // 把一组行为 变成一个模版
    void make()
    {
        makeHead();
        makeBody();
        makeTail();
    }
};

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

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

void mytest()
{
    MakeCar * bus = new MakeBus();
    bus->make();
    MakeCar *jeep = new MakeJeep();
    jeep->make();

    delete bus;
    bus = nullptr;
    delete jeep;
    jeep = nullptr;

    return;
}


int main()
{
    mytest();

    system("pause");
    return 0;
}

 

以上是关于行为型模型 模版模式的主要内容,如果未能解决你的问题,请参考以下文章

php设计模式:行为型模式

设计模式 行为型模式 -- 观察者模式(发布-订阅(Publish/Subscribe)模式)

设计模式-模版方法

Android 模版设计模式实战

java常用的的设计模式和开发模式有哪些

行为型模型 空对象模式