Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 用于在继承层次结构中创建对象的单个或多个抽象工厂? 我有以下健身俱乐部场景(用C++ BTW编码):_Oop_Design Patterns_Software Design_Abstract Factory - Fatal编程技术网

Oop 用于在继承层次结构中创建对象的单个或多个抽象工厂? 我有以下健身俱乐部场景(用C++ BTW编码):

Oop 用于在继承层次结构中创建对象的单个或多个抽象工厂? 我有以下健身俱乐部场景(用C++ BTW编码):,oop,design-patterns,software-design,abstract-factory,Oop,Design Patterns,Software Design,Abstract Factory,我想创建随机的Guest和Trainer对象(因此这两个对象都会随机生成名称,但是Guest也会随机生成健康数据) 我希望能够制造出许多不同复杂度的随机生成器 因此,很明显,两者都需要随机名字/姓氏生成器功能——但我不确定如何将这段代码保存在一个地方 我可以有一个包含所有生成方法(例如GenerateForeRename())的抽象工厂,所有需要随机生成的对象都可以使用它。但是,培训师是否应该访问一家可以生成健康数据的工厂,即使它与健康数据无关 我还考虑过为每个类创建一个抽象工厂——一个用于pe

我想创建随机的Guest和Trainer对象(因此这两个对象都会随机生成名称,但是Guest也会随机生成健康数据)

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

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

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

我还考虑过为每个类创建一个抽象工厂——一个用于person,一个用于customer,一个用于guest,让对象通过传递适当的工厂来生成它们的超类,但这听起来太复杂了

我是新来的,所以如果我的设计有点不对劲,请原谅我


你们有什么建议?

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

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


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

抽象工厂适用于一系列抽象类,因此一个就足够了。见: