怎样在领英上做公司网站,wordpress速度慢解决方法,山东已经宣布封城的城市2022年,旅游网站开发目的6模板方法模式通常由以下几个部分组成#xff1a;
1.抽象基类#xff08;Abstract Base Class#xff09;#xff1a;抽象基类定义了一个算法的骨架#xff0c;其中包含了模板方法和一些基本操作方法。模板方法在抽象基类中被声明为虚函数#xff0c;它定义了算法的流程
1.抽象基类Abstract Base Class抽象基类定义了一个算法的骨架其中包含了模板方法和一些基本操作方法。模板方法在抽象基类中被声明为虚函数它定义了算法的流程且不能被子类重写。基本操作方法也在抽象基类中被声明为虚函数但是可以被子类重写以实现具体的步骤。 2.具体子类Concrete Subclass具体子类继承自抽象基类并实现了抽象基类中的基本操作方法。具体子类可以覆盖基本操作方法以改变算法的行为但是不能改变模板方法的结构
代码示例
制作咖啡和泡茶的过程都是一致的:煮水-冲泡-导入杯中-添加佐料;两者的制作流程是一致的差别在于具体的细节。
#includeiostream
using namespace std;// 抽象基类
class Beverage {
public:// 模板方法定义了饮料的制作流程void prepare() {boilWater(); //煮水brew(); //冲泡pourInCup(); //导入杯中addCondiments(); //添加佐料}protected:// 基本操作方法需要在子类中进行具体实现virtual void boilWater() 0;virtual void brew() 0;virtual void pourInCup() 0;virtual void addCondiments() 0;
};// 具体子类 - 咖啡
class Coffee : public Beverage {
protected:void boilWater() override {std::cout Boiling water for coffee. std::endl;}void brew() override {std::cout Brewing coffee grinds. std::endl;}void pourInCup() override {std::cout Pouring coffee into cup. std::endl;}void addCondiments() override {std::cout Adding sugar and milk to coffee. std::endl;}
};// 具体子类 - 茶
class Tea : public Beverage {
protected:void boilWater() override {std::cout Boiling water for tea. std::endl;}void brew() override {std::cout Steeping tea leaves. std::endl;}void pourInCup() override {std::cout Pouring tea into cup. std::endl;}void addCondiments() override {std::cout Adding lemon to tea. std::endl;}
};int main()
{Coffee *c new Coffee;c-prepare();cout endl;Tea *t new Tea;t-prepare();
}