涉及知识:纯虚函数,虚函数, 虚析构函数, 抽象基类
UML图:
更多uml参考http://www.myexception.cn/design-patterns/873878.html
应用实例:女娲造人
#include <iostream>
using namespace std;
class Human
{
public:
virtual void speak() const = 0;
virtual ~Human(){}
};
class WhiteHuman : public Human
{
public:
virtual void speak() const{
cout << "I'm White man" << endl;
}
};
class BlackHuman : public Human
{
public:
virtual void speak() const{
cout << "I'm black man.." << endl;
}
};
class Factory
{
public:
//如果声明时函数有const修饰,则定义时也必须加上const修饰
virtual Human *create_man() const = 0;
virtual ~Factory(){}
};
class WhiteFactory : public Factory
{
public:
virtual Human *create_man() const{
return new WhiteHuman; //教训:要有意识的命名
}
};
class BlackFactory : public Factory
{
public :
virtual Human *create_man() const{
return new BlackHuman;
}
};
int main()
{
Factory *fc;
fc = new WhiteFactory;
Human *human;
human = fc->create_man();
human->speak();
delete fc;
delete human;
}