用于在继承层次结构中创建对象的单个或多个抽象工厂?

时间:2013-02-27 18:54:01

标签: oop design-patterns software-design abstract-factory

我有以下健康俱乐部场景(用C ++ BTW编码):

 UML Diagram

我想创建随机的Guest和Trainer对象(因此两者都会随机生成名称,但guest虚拟机也会有随机的健康数据)。

我希望能够制作许多不同复杂程度的不同随机生成器。

很明显两者都需要随机的forename / surname生成器功能 - 但我不确定如何将这些代码保存在一个地方。

我可以拥有一个带有所有生成方法的抽象工厂(例如generateForename()),其中所有需要随机生成的对象都可以使用。但是,教练是否可以访问可以生成健康数据的工厂,即使它与它们无关?

我还想过为每个班级设一个抽象工厂 - 所以一个人为人,一个为客户,一个为客人,让对象通过传递适当的工厂来生成他们的超类,但这听起来过于复杂。

我对此很新,所以请原谅我,如果我的设计有点偏。

你们有什么建议?

1 个答案:

答案 0 :(得分:1)

我不确定抽象工厂是你正在寻找的。当您具有相同的基类但是您需要创建不同的具体实例时,抽象工厂最有效。虽然您拥有Person的根基类,但实际上您需要创建两个不同基类的派生类。

我会努力将生成数据的方法与包含该数据的类保持在一起。这样就可以重复使用。

您是否可以在Guest和Trainer上创建一个工厂方法,然后可以使用各自基类中的方法生成数据?也许创建特定于测试的子类来使测试内容远离真实的东西?