2009-07-27 4 views
0

このようなクラス階層が与えられた場合: a package tree オブジェクトの作成に役立つクラスを持つことをお勧めしますか? E.i.作成可能な各クラスに対応するメソッドを持つクラスです(メソッドequals()はCompareCriteriaなどを返します)。 私が見る利点は、複雑な継承構造を隠してしまい、依存関係が縮小されることです。これはパターン、悪いアイデアや何か改善する方法を知っていますか?

答えて

1

オブジェクトの作成には2つまたは3つのパターンがあります。最も一般的なのがこの階層に適用される工場です。私は他のもの(それがどれくらいあるか)をあまり思い出さないが、別のものがプロトタイプと呼ばれると思う。

このようなことが気になる場合は、その本をデザインパターンで入手してください。

+2

Danielが参照している本は、デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素(http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612)です。 、時々Gang of Four(またはGoF)の本と呼ばれる。 –

4

オブジェクト作成のパターンには、Builder,Factory、およびPrototypeが含まれます。ウィキペディアはfairly detailed listです。

+0

これはどのようにしてその質問に対する答えですか? –

+0

@Jens Schauder - 'koen'はすでに作成パターンにいくつかの利点を見ています。パッケージは、このようなパターンを実装しなくてもすでに利用可能です。下の人はすべて同じことをしています。この種のパターンの追加を指示するための一般的なリソースを指しています。それが実際の質問です。 –

2

実際にはデザインパターンの1つです。パターンはクリエイティブなパターンです。ウィキペディアには、これらのパターンタイプの合理的な説明がある - GoF本から発信:

http://en.wikipedia.org/wiki/Creational_pattern

  • Abstract Factoryパターンを
  • Factory Methodパターン
  • ビルダーパターン
  • 遅延初期化パターン
  • オブジェクトプール
  • プロトタイプパターン
  • Singletonパターン
1

クラスhierachyは、ファクトリメソッドやオブジェクトを作成するために、他の特殊な方法が必要については何も言いません。これらすべてのクラスで何をしたいですか?使用するのは難しいでしょうか?延長するのは難しいでしょうか?

工場を作成するなどして状況が改善されますか?

あなたが気にすることができない場合は、クラスを使用するいくつかの例を作成してください(現実的な例を参考にしてください)。

このエクササイズの後、自分で決定することができます。または、より具体的な問題に戻ってくる。

0

とても複雑ではないようです。選択する前にユニットテストをどうやって行うのかを調べることができます。工場ではモックを適切に注入することが非常に難しくなります。

また、私はDependency Injectionのリストを見たことがありません。ユニットテストの問題と一般的なビルディングパターンに関連するいくつかの問題を解決するため、DIツールキットも検討します。あなたのクラスのいくつかは他のものをベースに構築されているようです(問題を解決するためにそれらを組み合わせるかもしれません)、そしてDIはそれを多く役立ちます。