私はいくつかの長いメソッドをリファクタリングする必要があります。db/service呼び出しを行う工場クラス
私たちのアプリでは、一連のドキュメントを作成しています。すべて同じ種類で、アプリ内の値から得られた値が異なります。そのコードはすべてヘルパークラスになっていますが、ファクトリクラスを使用してドキュメントを生成したいと考えています。ファクトリは、A
の場合はfactory.getDocument("A")
と、B
の場合はfactory.getDocument("B")
を呼び出します。
私の問題は、私のデータベースから値が必要で、サービスが工場クラスに含まれないようにどこか(または誰かが私に助言した)を読んでいるということです。この場合、完全なオブジェクトをどのように構築するのですか?
私のファクトリクラスでservice/db呼び出しを行うことは許されますか?
もしそうでない場合は、オブジェクトを構築するために必要な値(例:factory.getDocument(a,b,c,d)
またはinputobject
)の引数を渡す必要がありますか?これは、呼び出し元が文書A
の作成方法に関する情報を必要とするため、このアプローチを避けることを望んでいるので、ファクトリクラスを持つという目的を破るようです。私は呼び出しメソッドがドキュメントの作成方法について何も知らないことを望みます。
私のオプションは何ですか?
最近の[Singleton Antipattern](http://caines.ca/blog/programming/singletons-anti-pattern-or-worst-anti-pattern-ever/)も参照してください。 –
Meh - 問題がありますシングルトンは、特にオブジェクトの寿命とそれに含まれるリソースに関連して、何かを終了させるときにシングルトンを破棄することが設計上の問題になる可能性があります。しかし、私はこの記事のいくつかの議論に強く反対しています。アクセス/機能を許可または制限するコードを記述するたびに、それがカプセル化の前提です。シングルトンには場所がありますが、他のタイプのオブジェクトと同様にライフサイクルを尊重する必要があります。 – iandotkelly