2

AbstractFactoryのデザインパターンを理解しようとしています。私はそれで多くの問題を抱えています。次の例を使用して、UMLクラス図を作成しようとしています。

カーデザイナーは、さまざまな種類の車を設計できます。車には2つのドアを付けることも、4つのドアを付けることもできます。車は四輪駆動にすることも、二輪駆動にすることもできます。車は、ホイール、ドア、エンジン、トランスミッションなど、さまざまなパーツで構成されています。各パーツには、さまざまな操作があります。たとえば、トランスミッションには、first_gear()、second_gear()、third_gear()、fourth_gear()、reverse()があります。 、neutral()。

車の部品(上記にリストされている)は、ファミリーで利用可能です:ホンダ、ジープ、フォードなど。

アブストラクトファクトリーの設計手法を使用して、システムが車をある家族から別の家族に簡単に変更できるようにするソフトウェアシステムを開発する必要があります。

これが私がこれまで考えてきたことです。1つのファクトリと複数の抽象ファクトリがあります。つまり、抽象ファクトリがモデルを作成し、ファクトリがパーツを作成します...

誰か助けてもらえますか?ありがとう..

4

2 に答える 2

5

抽象ファクトリの設計パターンは、1 つの抽象ファクトリと、そこから派生する「ファクトリ」の実装が多数あることを意味します。

あなたの場合、HondaFactory、JeepFactory、FordFactory から派生する VehicleFactory という抽象ファクトリがあるでしょう。あなたの例では、おそらく抽象ファクトリから作成できるオブジェクトのクラスもあるでしょう。例: TwoDoorCar、FourDoorCar。これらのクラスも抽象的で、Ford2Door、HondaFourDoor などの具体的な実装があります。抽象ファクトリのポイントは、これらの具体的なオブジェクトの構築を抽象化することです。メソッド:

FourDoorCar VehicleFactory::CreateFourDoorCar() = 0;

次のような具体的な実装があります。

FourDoorCar HondaFactory::CreateFourDoorCar() { return new HondaFourDoor(); }

このように、すべての作成メソッドは、1 行のコードに基づいて決定されます。

VehicleFactory factory = new HondaFactory();

すべての場所の代わりに、新しい 4 ドア車と 2 ドア車を作成します。それが役立つことを願っています。

于 2009-10-28T19:14:05.303 に答える
3

完璧な例が Head First のデザイン パターンにあり、Google ブックスで無料でチェックできます。彼らは自動車工場の代わりにピザ屋を使っていますが、考え方は同じです。パターンを完璧に教えてくれました。

ヘッドファーストのデザインパターン

于 2009-10-28T19:10:23.343 に答える