1

例:ホイール、ブレーキ、エンジン、クラッチ、オートボックス、マニュアルボックス、エレクトリックウィンドウ、リアパークセンサー、ヒートシートなど、いくつかのタイプがあります。これらはすべてICarPartマーカーインターフェイスを継承します(属性(javaアノテーション)である可能性がありますが、この段階では重要ではありません)。

次に、すべての車種を表すことができる車のクラスを作成します。

class Car
{
    string Name;
    DateTime creationDate;
    string ID;

    IList<ICarPart> parts;
}

それから私は車を作るための工場を書きます。工場では、さまざまな車種の成分リストであるXMLを参照できます。例(フォーマットは無視してください。これは単なる説明です):

<ExpensiveCar>
  <Name>Expensive Car</Name>
  <Parts>
    <HeatedSeats/>
    <Wheel count=4/>
    <RearParkingSensor/>
    <ElectricWindow type=FrontAndBack/>
  </Parts>
</ExpensiveCar>

工場はこの成分リストを解析し、車のオブジェクトを作成します。部品がコード化され、成分リストがXMLで記述されていれば、新しい車種がシステムで利用できるようになります。

質問:

  1. このパターンは何と呼ばれていますか?それとも、複数のパターンを組み合わせただけですか?
  2. これはアンチパターンですか?
  3. これをUMLで表現するにはどうすればよいですか?パーツとベースカークラスのクラス図を作成できました。現在サポートされているそのクラスのインスタンスとそれらが持つパーツをどのように表示しますか?

前もって感謝します。不明な点がある場合はコメントしてください。詳細を修正/更新/提供します。

4

3 に答える 3

1

このパターンは何と呼ばれていますか?それとも、複数のパターンが組み合わされているだけですか?

ファクトリメソッドパターン(車のオブジェクトを作成する)と古き良き構成(ホイール、シートなどから車を作成する)があります。後者は構成のバリエーションです。

于 2009-03-10T12:56:57.153 に答える
1

パーツのセットを相互に互換性を持たせたいので、これは抽象ファクトリパターンかもしれないと思います。あなたはおそらくコンパクトカーの車輪にトラックのタイヤを付けたくないでしょう。

于 2009-03-10T13:33:17.283 に答える