美文网首页
建造者模式

建造者模式

作者: 大啸 | 来源:发表于2019-03-24 16:25 被阅读0次

#include <iostream>

#include <string>

#include <vector>

using namespace std;

class Packing {

public:

virtual string pack() {

return "";

}

};

class Wraper : public Packing {

public:

string pack() {

return "纸包装的食物";

}

};

class Botton : public Packing{

public:

string pack() {

return "杯子包装的食物";

}

};

class Item {

public:

virtual string name() = 0;

virtual Packing *packing() = 0;

virtual float price() = 0;

};

class Burger : public Item {

public:

float price() {

return 17.5;

}

Packing *packing() {

Packing *pack = new Wraper();

return pack;

}

string name() {

string n = "这是堡";

return n;

}

};

class Drank : public Item {

public:

float price() {

return 12.5;

}

Packing *packing() {

Packing *pack = new Botton();

return pack;

}

string name() {

string n = "这是饮料";

return n;

}

};

class VerBurger : public Burger {

public:

float price() {

return 10.5;

}

string name() {

string n = "田园果蔬堡";

return n;

}

};

class ChenBurger : public Burger {

public:

float price() {

return 20.5;

}

string name() {

string n = "奥尔良烤鸡腿堡";

return n;

}

};

class CocaColo : public Drank {

float price() {

return 15.5;

}

string name() {

string n = "可口可乐";

return n;

}

};

class Mail {

public:

vector<Item*> mailList;

void Order() {

int type = 0;

Item *it = nullptr;

cout << "输入1-3点餐,其他数字完成点餐^_^" << endl;

while (type != 100) {

cin >> type;

switch (type) {

case 1: it = new VerBurger(); mailList.push_back(it); break;

case 2: it = new ChenBurger(); mailList.push_back(it); break;

case 3: it = new CocaColo(); mailList.push_back(it); break;

default: type = 100; break;

}

}

}

void showDetal() {

float sum = 0.0;

for (int i = 0; i != mailList.size(); i++) {

sum += mailList[i]->price();

cout << mailList[i]->packing()->pack() << "包装的" << mailList[i]->name() << endl;

}

cout << "价值:" << sum << "元" << endl;

}

};

int main()

{

Mail *order = new Mail();

order->Order();

order->showDetal();

    std::cout << "Hello World!\n";

}

相关文章

  • Builder Pattern in Java

    建造者模式:建造者模式定义建造者模式应用场景实现案例Jdk中的建造者模式建造者模式的优点建造者模式的缺点 建造者模...

  • 设计模式(4) 建造者模式

    什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与...

  • 建造者模式(部件构造)

    目录 建造者模式的理念 从 POJO 到建造者模式的思考 怎么来实现建造者模式 建造者模式在Android源码中的...

  • 【设计模式】之建造者Builder模式

    建造者模式 什么是建造者模式? 建造者模式属于创建型模式的一员,可以控制对象的实例化过程。建造者模式简化了复杂对象...

  • 建造者模式

    一、建造者模式介绍 二、建造者模式代码实例

  • 建造者模式

    建造者模式 首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和...

  • 建造者模式:深入理解建造者模式 ——组装复杂的实例

    目录: 一 建造者模式介绍 1.1 定义 1.2 为什么要用建造者模式(优点)? 1.3 哪些情况不要用建造者模式...

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 一、设计模式(构建模式)——03建造模式与原型模式

    建造者模式 建造型模式用于创建过程稳定,但配置多变的对象。 建造模式的实现要点: 在建造者模式中,指挥者是直接与客...

  • 创建型模式:建造者模式

    个人公众号原文:创建型模式:建造者模式 五大创建型模式之四:建造者模式。 简介 姓名 :建造者模式 英文名 :Bu...

网友评论

      本文标题:建造者模式

      本文链接:https://www.haomeiwen.com/subject/hkvuvqtx.html