0

次のヘルス クラブのシナリオがあります (C++ BTW でコード化されています)。

UML ダイアグラム

ランダムな Guest オブジェクトと Trainer オブジェクトを作成したい (そのため、どちらもランダムに生成された名前になりますが、ゲストの健康データもランダムになります)。

さまざまな複雑さのさまざまな乱数発生器をたくさん作成できるようにしたいと考えています。

したがって、両方ともランダムな姓/名ジェネレーター機能が必要であることは明らかですが、このコードを 1 か所に保持する方法がわかりません。

ランダムな生成を必要とするすべてのオブジェクトが使用できるすべての生成メソッド (たとえば、generateForename()) を含む抽象ファクトリを作成できます。しかし、トレーナーは、健康データとは関係なくても、健康データを生成できる工場にアクセスできる必要がありますか?

また、クラスごとに抽象ファクトリを用意することも考えました。1 つは人用、1 つは顧客用、1 つはゲスト用で、オブジェクトに適切なファクトリを渡してスーパークラスを生成させますが、状況によっては複雑すぎるように思えます。

私はこれにかなり慣れていないので、私のデザインが少しずれている場合はご容赦ください。

あなたたちは何を提案しますか?

4

1 に答える 1

1

抽象ファクトリがあなたが探しているものかどうかはわかりません。抽象ファクトリは、同じ基本クラスがあるが、異なる具象インスタンスを作成する必要がある場合に最適に機能します。Personのルート基本クラスがありますが、実際には2つの異なる基本クラスの派生物を作成する必要があります。

私は、データを生成するメソッドを、そのデータを含むクラスと一緒に保持するように努めます。このようにして、再利用できます。

GuestとTrainerにファクトリメソッドを作成して、それぞれの基本クラスのメソッドを使用してデータを生成できるようにできますか?たぶん、テストのものを実際のものから遠ざけるために、テスト固有のサブクラスを作成しますか?

于 2013-02-28T12:20:07.097 に答える