zoukankan      html  css  js  c++  java
  • 16行为型模式之模板模式

    概念

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

    应用场景

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

      - 具有统一的操作步骤或操作过程

      - 具有不同的操作细节

      - 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同

    总结:

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

    角色和职责

    AbstractClass:

      抽象类的父类

    ConcreteClass:

      具体的实现子类

    templateMethod():

      模板方法

    method1()与method2():

      具体步骤方法 

    案例

     //将方法在抽象类中实现再一次封装。

    #include <iostream>
    using namespace std;
    
    class MakeCar
    {
    public:
    	virtual void makeHead() = 0;
    	virtual void makeBody() = 0;
    	virtual void makeTail() = 0;
    
    public:   //把一组行为 变成 一个模板
    	void make()
    	{
    		makeHead();
    		makeBody();
    		makeTail();
    	}
    	
    protected:
    private:
    };
    
    class MakeBus : public MakeCar
    {
    public:
    	virtual void makeHead()
    	{
    		cout << "bus 组装 车头" << endl;
    	}
    	virtual void makeBody()
    	{
    		cout << "bus 组装 车身" << endl;
    	}
    	virtual void makeTail()
    	{
    		cout << "bus 组装 车尾" << endl;
    	}
    protected:
    private:
    };
    
    class MakeJeep : public MakeCar
    {
    public:
    	virtual void makeHead()
    	{
    		cout << "Jeep 组装 车头" << endl;
    	}
    	virtual void makeBody()
    	{
    		cout << "Jeep 组装 车身" << endl;
    	}
    	virtual void makeTail()
    	{
    		cout << "Jeep 组装 车尾" << endl;
    	}
    protected:
    private:
    };
    
    void main()
    {
    	MakeCar *bus = new MakeBus;
    	
    	//bus->makeHead();
    	//bus->makeBody();
    	//bus->makeTail();
    	bus->make();
    
    	MakeCar *jeep = new MakeJeep;
    	//jeep->makeHead();
    	//jeep->makeBody();
    	//jeep->makeTail();
    	jeep->make();
    
    	delete bus;
    	delete jeep;
    
    	cout<<"hello..."<<endl;
    	system("pause");
    	return ;
    }
    

      

  • 相关阅读:
    noi.ac NOI挑战营模拟赛1-5
    TJOI2015 弦论
    CQOI2018 破解D-H协议
    NOI2013 矩阵游戏
    NOI2015 荷马史诗
    NOI2015 寿司晚宴
    SDOI2014 重建
    NOI1999 生日蛋糕
    NOI2015 程序自动分析
    ZJOI2008 泡泡堂
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/10358015.html
Copyright © 2011-2022 走看看