0
点赞
收藏
分享

微信扫一扫

flask 与 小程序 下单提交 订单列表展示

Ewall_熊猫 2024-01-24 阅读 8

建造者模式

建造者把产品细节的实现过程单独封装成类,完成产品本身和创建产品之间的解耦。每一个建造者都相对独立,因此在建造细节实现方面实现了灵活性和可扩展性。

建造者模式和工厂模式的区别:工厂模式关心把这个产品创建出来,而不关心其细节;建造者模式不仅需要把产品生产出来,还需要关心生产细节。

建造者的核心在于将建造者独立成不同的子类,以实现建造过程的灵活性和可扩展性。

示例代码

#include<iostream>
#include<string>
using namespace std;


class Meal{
public:
void setBurger(string str){
burger = str;
}
void setFries(string str){
fries = str;
}
void setDrink(string str){
drink = str;
}
void print(){
std::cout << burger << std::endl;
std::cout << fries << std::endl;
std::cout << drink << std::endl;
}
private:
string burger;
string fries;
string drink;
};
class MealBuilder{
public:
virtual void buildBurger(){}
virtual void buildFries(){}
virtual void buildDrink(){}
virtual Meal* getMeal(){
return meal;
}

Meal* meal = new Meal();
};
class ChickenMealBuilder : public MealBuilder{
public:
void buildBurger(){
meal->setBurger("鸡肉汉堡");
}
void buildFries(){
meal->setFries("中份薯条");
}
void buildDrink(){
meal->setDrink("大杯果汁");
}
};
class BeefBurgerMealBuilder : public MealBuilder{
public:
void buildBurger(){
meal->setBurger("牛肉汉堡");
}
void buildFries(){
meal->setFries("大份薯条");
}
void buildDrink(){
meal->setDrink("中杯可乐");
}
};
class ShrimpMealBuilder : public MealBuilder{
public:
void buildBurger(){
meal->setBurger("虾肉汉堡");
}
void buildFries(){
meal->setFries("小份薯条");
}
void buildDrink(){
meal->setDrink("大杯芬达");
}
};
class MealDirector{
public:
void setMealBuilder(MealBuilder* mealBuilder){
this->mealBuilder = mealBuilder;
}
Meal* getMeal(){ return mealBuilder->getMeal(); }
void constructMeal(){
mealBuilder->buildBurger();
mealBuilder->buildFries();
mealBuilder->buildDrink();
}
private:
MealBuilder* mealBuilder;
};
int main(){
MealDirector* director = new MealDirector();
director->setMealBuilder(new BeefBurgerMealBuilder());
director->constructMeal();
Meal* meal = director->getMeal();
meal->print();
}
举报

相关推荐

0 条评论