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. 当算法能够实现统一步骤,并且可以划分不变部分和可变部分,将可变互粉在子类中实现算法不同的变化;
  • 相关阅读:
    AjaxPro版自动完成(Autocomplete)功能实现
    推荐一款小巧的截图工具
    在VS2008中设置jquery智能提示
    Jquery选择器全总结
    MD5消息摘要算法的那些事
    C#中的集合学习笔记
    委托,文件流,扩展方法学习笔记
    Jquery实现仿腾讯微薄的广播发表
    C#中的文件流学习笔记第一篇
    ASP.NET MVC小记第一篇
  • 原文地址:https://www.cnblogs.com/chencarl/p/8719776.html
Copyright © 2011-2022 走看看