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;}
#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;}
相关文章推荐
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 工厂模式(FactoryMethod) - Java实现
- 设计模式之工厂模式(Factory Pattern)用C++实现
- C++设计模式 -> 创建型 -> 工厂方式(FactoryMethod)
- 23种设计模式之单例模式(创建型,3 Singleton,c++实现)
- 设计模式 - 工厂方法(Factory Method) C++实现
- C++设计模式 factory工厂模式,实现绘制几何形状
- 23种设计模式之原型模式(创建型,5 Prototype,c++实现)
- 23种设计模式之抽象工厂模式(创建型,2 AbstractFactory,c++实现)
- 使用C++实现设计模式(连载): 第二回 Factory 工厂模式
- C++实现设计模式: Factory 工厂模式
- C++实现设计模式: Factory 工厂模式
- 23种设计模式之建造者模式(创建型,4 Builder,c++实现)
- java23种设计模式之工厂模式(Factory)的实现
- C++实现设计模式: Factory 工厂模式
- 创建型模式之工厂模式(Factory Pattern)C++实现******
- 23种设计模式之适配器模式(结构型,3 Adapter,c++实现)
- 设计模式C++实现(1)——工厂模式
- 设计模式 -- 简单工厂模式 -- c++实现
- C++设计模式-Factory工厂模式
- 我所理解的设计模式(C++实现)——抽象工厂模式(Abstract Factory Pattern)