コンストラクタインジェクションを使用するIoCコンテナを使用しています(Castle Windsorなど)。私はそれが唯一のクラスの消費者によって知られている製品に依存している注入されたサービスとデータを持つクラスの依存性注入の構成
public class ProductDataManager
{
public ProductDataManager(Product product, IProductDataLoader productDataLoader)
{
}
// a number of methods here that manage the products data in different ways...
}
...製品を管理し、次の(例)クラスを持っています。また、製品データローダサービスに依存しています。私はこのサービスの実装者をIoCコンテナに定義します。
サービス依存関係(IProductDataLoader)をIoCコンテナによってインジェクトできるように、IoCコンテナ(および消費クラス)でこのクラス(ProductDataManager)を定義し、データ依存性消費階級を過ぎた?
これはコードのにおいですか?もしそうなら、これをどのように変更することができますか?
工場が単純なnew()の場合、インターフェイスを作成する必要はないと言えます.Funcを注入すると何も問題はありません。あなたはそれを行うための洗練された施設を使用することもできます:http://mikehadlow.blogspot.com/2010/01/10-advanced-windsor-tricks-1a-delegate.html –
@マーク:「IXXXFactory」の作成はより多くです冗長で、はるかに明示的で、コードを工場でより理解しやすくします。 'Func 'を使うのは私の意見では少しわかりにくいです。 –
Steven