您的位置:首页 > 编程语言 > C语言/C++

23种设计模式之工厂模式(创建型,1 Factory,c++实现)

2018-02-25 13:39 721 查看
1 简单工厂模式



#include <stdlib.h>#include <stdio.h>#include <iostream>
using namespace std;
class Fruit {public:
virtual void sayName() = 0;};
class Banana :public Fruit {public:void sayName() {cout << "I am banana"<< endl;}};
class Apple :public Fruit {public:void sayName() {cout << "I am apple" << endl;}};
class Factory {public:Fruit *create(char *p) {if (strcmp(p, "banana") == 0) {return new Banana;} else if (strcmp(p, "apple") == 0) {return new Apple;}else {cout << "The type can't be supported" << endl;return NULL;}}};
void main() {Factory *f = new Factory;Fruit *fruit = f->create("banana");fruit->sayName();delete fruit;
       fruit = f->create("apple");fruit->getFruit();delete fruit;
fruit = f->create("xxx");if (fruit != NULL) {fruit->sayName();delete fruit;}

2 工厂模式



#include <stdlib.h>#include <stdio.h>#include <iostream>
using namespace std;
class Fruit {public:
virtual void sayName() = 0;};
class Banana :public Fruit {public:void sayName() {cout << "I am banana" << endl;}};
class Apple :public Fruit {public:void sayName() {cout << "I am apple" << endl;}};
class AbstractFactory {public:virtual Fruit *createProduct() = 0;};
class BananaFactory :public AbstractFactory{public:Fruit *createProduct() {return new Banana;}};
class AppleFactory :public AbstractFactory {public:Fruit *createProduct() {return new Apple;}};
void main() {AbstractFactory *f = NULL;Fruit *fruit = NULL;
f = new BananaFactory;fruit = f->createProduct();fruit->sayName();delete fruit;delete f;
f = new AppleFactory;fruit = f->createProduct();fruit->sayName();delete fruit;delete f;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: