我有以下健康俱乐部场景(用C ++ BTW编码):
我想创建随机的Guest和Trainer对象(因此两者都会随机生成名称,但guest虚拟机也会有随机的健康数据)。
我希望能够制作许多不同复杂程度的不同随机生成器。
很明显两者都需要随机的forename / surname生成器功能 - 但我不确定如何将这些代码保存在一个地方。
我可以拥有一个带有所有生成方法的抽象工厂(例如generateForename()),其中所有需要随机生成的对象都可以使用。但是,教练是否可以访问可以生成健康数据的工厂,即使它与它们无关?
我还想过为每个班级设一个抽象工厂 - 所以一个人为人,一个为客户,一个为客人,让对象通过传递适当的工厂来生成他们的超类,但这听起来过于复杂。
我对此很新,所以请原谅我,如果我的设计有点偏。
你们有什么建议?
答案 0 :(得分:1)
我不确定抽象工厂是你正在寻找的。当您具有相同的基类但是您需要创建不同的具体实例时,抽象工厂最有效。虽然您拥有Person的根基类,但实际上您需要创建两个不同基类的派生类。
我会努力将生成数据的方法与包含该数据的类保持在一起。这样就可以重复使用。
您是否可以在Guest和Trainer上创建一个工厂方法,然后可以使用各自基类中的方法生成数据?也许创建特定于测试的子类来使测试内容远离真实的东西?