我在Google上搜索这个模式,发现我们可以为Abstract factories
创建一个Factory
,这真的很有意义。对我来说,我从一些C++书籍中学习了以下示例。为工厂创建抽象工厂是否有意义?
想象一下,我们在游戏应用程序中有两个抽象类:Monster
和SuperMonster
。
Depedning的难易程度,我们也有自己的实现: SillyMonster
,MediumMonster
和HardMonster
等为SuperMonster
秒。
所以,现在我们可以创建一个相同的基三班对象工厂:
class AbstractEnemyFactory
{
public:
virtual Soldier* MakeSoldier() = 0;
virtual Monster* MakeMonster() = 0;
virtual SuperMonster* MakeSuperMonster() = 0;
};
class EasyLevelEnemyFactory : public AbstractEnemyFactory
{
public:
Monster* MakeMonster()
{
return new SillyMonster;
}
SuperMonster* MakeSuperMonster()
{
return new SillySuperMonster;
}
};
//The other two factories
如果我们创建AbstractEnemyFactoryFactory
这是会根据什么样的水平,以建立一个适当的AbstractEnemyFactory
实现它似乎很自然地我是玩家在运行时选择。
问题:将ObjectFactory
封装到AbstractFactory
中是否有意义?
我的意思是我们创建一个Abstract Factory
本身将创建Object Factorie
s而不是具体的对象,而这些具体的对象又创建具体的对象。如果您在“谁是要采取建立选择恰当的AbstractEnemyFactoryFactory
照顾”的问题再次使用AbstractEnemyFactoryFactory
创建AbstractEnemyFactory
,那么你会发现自己我找不到更多或更少的明智例如...
为什么你害怕这样的解决方案?我认为,从面向对象的角度来看,它不仅仅是可以接受的...... – 2015-04-04 15:12:06