zoukankan      html  css  js  c++  java
  • 设计模式之模板方法模式(TemplateMethod)

    模板方法模式使用继承来实现模式的功能,在基类使用一个方法来定义算法的各个步骤,这些步骤(方法)的具体实现会放到子类中,通过这样来实现不同算法对象的算法拼合,完成该对象整体算法的实现。

    作用

    模板方法中定义了具体操作中所使用算法的各个步骤,并将其实现交由子类完成,从而实现多种不同的功能;

    类视图

    实现

    class Lunch
    {
    public:
    	Lunch(){}
    	virtual ~Lunch(){}
    
    	void feed()
    	{
    		cooking();
    		eating();
    		cleaning();
    	}
    	virtual void cooking()=0;
    	virtual void eating()
    	{
    		cout<<"I am eating,Please don't disturb me
    ";
    	}
    	virtual void cleaning();
    };
    
    
    class MCMeal : public Lunch
    {
    public:
    	MCMeal(){}
    	virtual ~MCMeal(){}
    
    	void cooking()
    	{
    		cout<< "I am cooking Mc Meal
    ";
    	}
    	void cleaning()
    	{
    		cout<< "I am cleaning Mc plates";
    	}
    };
    
    class KFCMeal : public Lunch
    {
    public:
    	KFCMeal() {}
    	virtual ~KFCMeal(){}
    
    	void cooking()
    	{
    		cout<< "I am cooking KFC Meal
    ";
    	}
    	void eating
    	{
    		cout<< "KFC Meal is good
    ";
    	}
    	void cleaning()
    	{
    		cout<< "I am cleaning KFC plates and cups
    ";
    	}
    };
    
    
    int main()
    {
    	Lunch* meal1 = new McMeal();
    	meal1.feed();
    	Lunch* meal2 = new KFCMeal();
    	meal2.feed();
    }
    
    

    应用场景

    1. 当一个算法功能需要能够改变,并通过在子类中对功能重写来实现这种变化;
    2. 当算法能够实现统一步骤,并且可以划分不变部分和可变部分,将可变互粉在子类中实现算法不同的变化;
  • 相关阅读:
    [考试反思]0316省选模拟47:偏颇
    [考试反思]0315省选模拟46:执念
    [考试反思]0314省选模拟45:偏离
    [考试反思]0313省选模拟44:习惯
    [考试反思]0310省选模拟42:清醒
    bd-----文本分析
    bigdata7--正则表达式
    bigdata6----vi编辑器
    bigdata4----linux文本操作命令
    bigdata4----linux文件系统命令
  • 原文地址:https://www.cnblogs.com/chencarl/p/8719776.html
Copyright © 2011-2022 走看看