模板方法模式使用繼承來實現模式的功能,在基類使用一個方法來定義演算法的各個步驟,這些步驟(方法)的具體實現會放到子類中,通過這樣來實現不同演算法對象的演算法拼合,完成該對象整體演算法的實現。 作用 模板方法中定義了具體操作中所使用演算法的各個步驟,並將其實現交由子類完成,從而實現多種不同的功能; 類視圖 實現 ...
模板方法模式使用繼承來實現模式的功能,在基類使用一個方法來定義演算法的各個步驟,這些步驟(方法)的具體實現會放到子類中,通過這樣來實現不同演算法對象的演算法拼合,完成該對象整體演算法的實現。
作用
模板方法中定義了具體操作中所使用演算法的各個步驟,並將其實現交由子類完成,從而實現多種不同的功能;
類視圖
實現
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\n";
}
virtual void cleaning();
};
class MCMeal : public Lunch
{
public:
MCMeal(){}
virtual ~MCMeal(){}
void cooking()
{
cout<< "I am cooking Mc Meal\n";
}
void cleaning()
{
cout<< "I am cleaning Mc plates";
}
};
class KFCMeal : public Lunch
{
public:
KFCMeal() {}
virtual ~KFCMeal(){}
void cooking()
{
cout<< "I am cooking KFC Meal\n";
}
void eating
{
cout<< "KFC Meal is good\n";
}
void cleaning()
{
cout<< "I am cleaning KFC plates and cups\n";
}
};
int main()
{
Lunch* meal1 = new McMeal();
meal1.feed();
Lunch* meal2 = new KFCMeal();
meal2.feed();
}
應用場景
- 當一個演算法功能需要能夠改變,並通過在子類中對功能重寫來實現這種變化;
- 當演算法能夠實現統一步驟,並且可以劃分不變部分和可變部分,將可變互粉在子類中實現演算法不同的變化;