欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 设计模式——模板方法模式

设计模式——模板方法模式

2025/2/25 5:29:51 来源:https://blog.csdn.net/m0_67677309/article/details/143879637  浏览:    关键词:设计模式——模板方法模式

定义一个操作中的算法框架,而将一些步骤延迟到子类中,模版方法模式使得子类可以不改变算法结构即可重新定义算法的某些特定步骤

1.优点:
在父类中定义一个算法,而右它的子类来实现细节处理,在子类实现详细的处理算法并不会改变算法中步骤的执行顺序
模版方法模式是一种代码复用技术,他在类库中设计特别重要,它提取了类库中的公共行为,将公共行为放在父类,而通过其他子类来实现不同的行为,它鼓了我们恰当使用继承来实现代码复用
可实现一种反向控制结构,通过子类覆盖父类的钩子方法来决定是否需要执行
在模版方法模式中可以通过子类来覆盖父类的基本方法,不同子类可以提供基本方法的不同实现,更换和增加新的子类很方便,符合单一职责和开闭原则

2.缺点
灵活性较低:模板方法模式强制子类遵循父类定义的算法结构,子类只能在有限的步骤上进行扩展,难以完全改变算法的结构。
高耦合性:模板方法模式可能导致父类和子类之间的耦合性较高,任何对父类的修改都有可能影响到所有子类,从而增加了维护的难度。

#include<iostream>
using namespace std;class DrinkTemplate
{
public:virtual void BolidWater()=0;virtual void Brew()=0;virtual void PourCup()=0;virtual  void AddSomething()=0;void Make(){BolidWater();Brew();PourCup();AddSomething();}
};class Coffee:public DrinkTemplate
{
public:virtual void Brew(){cout<<"冲泡咖啡"<<endl;	}virtual void BolidWater(){cout<<"煮水"<<endl;	}virtual void PourCup(){cout<<"咖啡倒入杯子中"<<endl;	}virtual  void AddSomething(){cout<<"加糖,加牛奶"<<endl;	}
};class Tea: public DrinkTemplate
{
public:virtual void BolidWater(){cout<<"煮水"<<endl;	}virtual void Brew(){cout<<"冲泡铁观音"<<endl;	}virtual void PourCup(){cout<<"茶倒入杯子中"<<endl;	}virtual  void AddSomething(){cout<<"加蜂蜜"<<endl;	}};void test()
{Tea * tea=new Tea;tea->Make();cout<<"  "<<endl;		Coffee *coffee=new Coffee;coffee->Make();}int main()
{test();return 0;	
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词