2008年4月3日 星期四

Simple Factory

目的在對一個產品進行抽象化,將其介面獨立出來
建立產品去實現這個介面
再由一個工廠產生,實作此介面的物件

C++沒有Reflection,如果要用的話應該要使用一些library

class Imust_imp {
public :
virtual void do_something(){};
};

class Imp1 : public Imust_imp {
public:
virtual void do_something()
{
cout << "I am singing\n";
}
};

class Imp2 : public Imust_imp {
public:
virtual void do_something()
{
cout << "I am playing\n";
}
};

class Simple_factory {
public:
Imust_imp* create_by_name(char* class_name)
{
Imust_imp* ret;
if( strcmp(class_name, "Imp1") == 0 ) {
ret = new Imp1();
return ret;
}
if( strcmp(class_name, "Imp2") == 0 ) {
ret = new Imp2();
return ret;
}
return 0;
}
};



int main()
{
Simple_factory *fac = new Simple_factory();

Imust_imp* a = fac->create_by_name("Imp1");
Imust_imp* b = fac->create_by_name("Imp2");
a->do_something();
b->do_something();

return 0;
}

沒有留言: