5. 抽象工厂模式

    抽象工厂的作用是创建产品族。下面将各种具体的pizza进行了分类和抽象,如加州奶酪pizza和纽约奶酪pizza进行抽象,同一种pizza,不同的地方所使用的原材料是不同的。所以从pizza这个抽象类中,派生出一个奶酪pizza类。奶酪pizza类中有一个原料工厂,由这个工厂供应原材料。这样pizza和原料之间被解耦。 


Pizza *concretePizzaStoreA::createPizza(int type)
{
     ConcretePizzaIngredientFactoryA *ingredientFactory = new ConcretePizzaIngredientFactoryA();
     
     if(type == PIZZA_A)
          return new concretePizzaA(ingredientFactory);
     else(type == PIZZA_B)
          return new concretePizzaB(ingredientFactory);
     else(type == PIZZA_C)
          return new concretePizzaC(ingredientFactory);
}

concretePizzaA::concretePizzaA(PizzaIngredientFactory *fy)
{
     this->ingredientFactory = fy;
}

void concretePizzaA::Prepare()
{
     dough = ingredientFactory->createDough();
     sauce = ingredientFactory->createSauce();
     cheese = ingredientFactory->createCheese();
}
client:
// 1.创建一个pizza店
PizzaStore *pizzaStore = new concretePizzaStoreA();
// 2.下单
pizzaStore->orderPizza(type);
// 3. orderPizza中调用createPizza创建具体原料工厂-->根据type创建具体pizza.
// 4. 对pizza准备原料(由具体的原料工厂提供各种原材料)-->烤焙-->切块-->装箱。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值