1

私はいくつかの条件を持っています-

List globalList = new ArrayList();
if(X.isExists)
  globalList(new XBasedClass());
if(Y.isExists && Z.isExists)
  globalList(new ZYBasedClass());
else if(Y.isExists || Z.isExists)
  globalList(new CommonBasedClass());
if(N.isExists)
....

最初はState Patternを使用することを考えましたが、条件ごとにクラスを宣言する必要があり、クラスの数を制限したいことに気付きました。

次に、 Decorator Patternを使用することを考えましたが、再び上記の条件チェックが必要になり、それが必要な場合は上記のループで問題が発生します。

私の条件は、新しいクラスを List に追加するだけでよく、将来的に条件の数が増えても、作業は同じままです。つまり、リストを更新します。

そのため、条件を検証し、それに応じてリストを更新するだけの静的メソッドを使用してプライベート クラスを作成しました。

それを達成するためのより良い推奨設計はありますか

4

2 に答える 2

0

いくつかのコメントに対処するための回答としてこれを書いています。

  1. 工場のパターンはあなたの場合に正しいことなので、@ Tech-userの回答に賛成票を投じました。
  2. ファクトリ コンセプトの実装には、さまざまなレベルの複雑さがあります。「抽象工場」は、私が期待する以上のものです。
  3. パターンのさまざまなカテゴリについて詳しくは、こちらをご覧ください。それは、適切なものに焦点を合わせるのに役立ちます。工場は創造的なパターンです。新しいオブジェクトを作成しています。State と Decorator は本質的に創造的ではありません。
  4. 物事を複雑にするのでパターンを使用しないことを主張する他の人のコメントは、パターンを使用するポイントを見逃しています。パターンはコードを改善し、オブジェクト指向の良さでコードを構築します。ただし、コードを不適切なパターンに強制すると、事態は確実に複雑になります。
  5. 「複雑さが増す」という理由でパターンを手放すことは、本当に、本当に見当違いです。
于 2013-04-23T13:51:00.423 に答える