コード
#include <iostream>
#include <string>
using namespace std;
#define AMERICA
class Product{
public:
virtual void print() = 0;
};
class Tokyo: public Product{
private:
void print(){
cout << "Capital is Tokyo" << endl;
}
};
class Washington: public Product{
private:
void print(){
cout << "Capital is Washington" << endl;
}
};
class Sushi: public Product{
private:
void print(){
cout << "Sushi is famous" << endl;
}
};
class Steak: public Product{
private:
void print(){
cout << "Steak is famous" << endl;
}
};
class Factory{
public:
virtual Product* createCapitalInstance() = 0;
virtual Product* createFoodInstance() = 0;
};
class JapanFactory: public Factory{
public:
Product* createCapitalInstance(){
return new Tokyo;
}
Product* createFoodInstance(){
return new Sushi;
}
};
class AmericaFactory: public Factory{
public:
Product* createCapitalInstance(){
return new Washington;
}
Product* createFoodInstance(){
return new Steak;
}
};
int main(){
#ifdef JAPAN
Factory *factory = new JapanFactory();
#else
Factory *factory = new AmericaFactory();
#endif
Product* capital = factory->createCapitalInstance();
Product* food = factory->createFoodInstance();
capital->print();
food->print();
return 0;
}