0

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

UML 图

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

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

很明显,两者都需要随机名字/姓氏生成器功能 - 但我不确定如何将这段代码保存在一个地方。

我可以有一个包含所有生成方法(例如 generateForename())的抽象工厂,所有需要随机生成的对象都可以使用它。但是,培训师是否应该有权访问可以生成健康数据的工厂,即使它与这些数据无关?

我还考虑过为每个类建立一个抽象工厂——一个用于人,一个用于客户,一个用于客人,并让对象通过将它们传递给适当的工厂来生成它们的超类,但这对于这种情况来说听起来过于复杂。

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

你们有什么建议?

4

1 回答 1

1

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

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

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

于 2013-02-28T12:20:07.097 回答