23种设计模式之抽象工厂模式(创建型,2 AbstractFactory,c++实现)

23种设计模式之抽象工厂模式(创建型,2 AbstractFactory,c++实现)

23种设计模式之抽象工厂模式(创建型,2 AbstractFactory,c++实现)

#include <stdlib.h>

#include <stdio.h>

#include <iostream>


using namespace std;


class Fruit {

public:

virtual void sayName() = 0;

};


class SouthBanana :public Fruit {

public:

void sayName() {

cout << "I am south banana" << endl;

}

};


class NorthBanana :public Fruit {

public:

void sayName() {

cout << "I am north banana" << endl;

}

};


class SouthApple :public Fruit {

public:

void sayName() {

cout << "I am south apple" << endl;

}

};


class NorthApple :public Fruit {

public:

void sayName() {

cout << "I am north apple" << endl;

}

};


class AbstractFactory {

public:

virtual Fruit *createBanana() = 0;

virtual Fruit *createApple() = 0;

};


class SouthFactory :public AbstractFactory {

public:

Fruit *createBanana() {

return new SouthBanana;

}


Fruit *createApple() {

return new SouthApple;

}

};


class NorthFactory :public AbstractFactory {

public:

Fruit *createBanana() {

return new NorthBanana;

}


Fruit *createApple() {

return new NorthApple;

}

};


void main() {

AbstractFactory *f = NULL;

Fruit *fruit = NULL;


f = new SouthFactory;

fruit = f->createBanana();

fruit->sayName();

delete fruit;

fruit = f->createApple();

fruit->sayName();

delete fruit;

delete f;


f = new NorthFactory;

fruit = f->createBanana();

fruit->sayName();

delete fruit;

fruit = f->createApple();

fruit->sayName();

delete fruit;

delete f;

}