包括简单工厂,工厂方法,抽象工厂
简单工厂
在简单工厂模式中,可以根据实际的参数不同返回不同的实例。同时在简单工厂模式中会定义一个类负责创建其他类的实例,被创建的实例也通常具有共同的父类。
// 怪物接口
class Monster {
public:
virtual void attack() = 0;
};
// 具体的怪物类
class Zombie : public Monster {
public:
void attack() override {
std::cout << "Zombie attacks with hands" << std::endl;
}
};
class Vampire : public Monster {
public:
void attack() override {
std::cout << "Vampire attacks with fangs" << std::endl;
}
};
// 怪物工厂类
class MonsterFactory {
public:
static Monster* createMonster(const std::string& type) {
if (type == "zombie") {
return new Zombie();
} else if (type == "vampire") {
return new Vampire();
} else {
throw std::invalid_argument("Invalid monster type: " + type);
}
}
};
// 使用工厂类创建不同类