2012-03-04 15 views
3

私の周りの誰もが具体的なオブジェクトをインスタンス化しないように指示するため、工場パターンを使用しないでください。テストではファクトリが扱いにくく、可能なすべてのオブジェクトに対してファクトリを作成したくありません私が作成する。 この混乱のなかで、なぜシングルトンファクトリを持つ必要がありますか?工場パターンの過度使用

+0

たぶん私はちょうどニックピッキーになっているかもしれません...しかし、どこか、いつかは、どうにかして、具体的なオブジェクトをインスタンス化する必要があります。そうしないと、作業するオブジェクトがありません。問題は、どこで、いつ、どのように行うのかということです。 – cHao

+1

ああ、シングルトンは必要ありません。期間。あなたはテスト容易性について話をしたいと思っています。 – cHao

+0

私は同じことを知っていますが、なぜ人々がそれを使うのか分かりません。それを使う目的は何ですか – WordsWorth

答えて

1

あなたは、すべてに対して工場パターンを使用して、狂気であることを覚えておいてください。

シングルトンは有用かもしれませんが、必要であればさらに必要になります。

主なものは、あなたが理解していないか、またはそれをもう一度考えるMartin Fowlersの本を読む価値があるとは思わないものを使用することではなく、途中の道が正しいと結論づけるかもしれません。

プログラミングでは、多くの要因によって正誤がありません。すべてのインタフェースを使用しても痛みを伴うことはありますが、それはいつも私のために支払っています。

0

インターフェイスタイプは、多くのオブジェクトタイプによってサポートされる可能性のあるプロトコルの仕様です。可能であれば、インターフェイスの代わりにを使用してください。バージョン管理の観点からは、クラスはインタフェースよりも柔軟性があります。クラスを使用すると、バージョン1.0を出荷し、次にバージョン2.0でクラスに新しいメソッドを追加できます。メソッドが抽象メソッドでない限り、既存の派生クラスは変更されずに機能し続けます。

たとえば、データアダプタ用のインターフェイスを提供することは困難であり、本当のメリットはありません。開発者は各アダプタに対して個別にプログラムを作成する必要があります。そのため、インターフェイスを提供することによるメリットがあります。ただし、すべてのアダプター間の一貫性をサポートする必要があります。このような状況では、インタフェースや抽象クラスは適切ではありませんが、一貫したパターンを提供することは非常に重要です。ベースクラスの開発者に一貫したパターンを提供できます。基本クラスの作成には、次のガイドラインに従ってください。

インタフェースは、次のような状況に適しています

  • いくつかの無関係なクラスがプロトコルをサポートします。

  • これらのクラスは、すでに基本クラス(たとえば、ユーザーインターフェイス(UI)コントロール、XML Webサービスなど)を確立しています。

  • 集約は適切でないか、または実際的ではありません。

その他の状況では、クラス継承はより良いモデルです。

関連する問題