1. 程式人生 > >行為型模型 模版模式

行為型模型 模版模式

concrete ron 行為模式 行為 不同 err ret head rtu

行為型模型 模版模式

應用場景

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; }

行為型模型 模版模式