DDDブック、エリックエヴァンス:「工場は、作成されたコンクリートクラスではなく、目的のタイプに抽象化する必要がある」とはどういう意味ですか?

StackOverflow https://stackoverflow.com/questions/2194629

質問

エリック・エヴァンスによる本ドメイン駆動型のデザインでは、「工場」のセクションの第6章(139ページ)で次のように書かれています。

「優れた工場の2つの基本的な要件は次のとおりです。

...

「2.工場は、作成されたコンクリートクラス(ES)ではなく、目的のタイプに抽象化する必要があります。」

基本的な要件番号2に関するその声明の意味を詳しく説明してください。

役に立ちましたか?

解決

カルロス・ロスの答えは正しいですが、常に使用することを忘れないでください 抽象的な工場 同様に、これにより、消費者を具体的な工場や種類に結合することなく、具体的な工場を具体的な種類に結合することができます。

public interface ISomethingFactory
{
    ISomething Create();
}

public class SomethingFactory : ISomethingFactory
{
    public ISomething Create()
    {
        return new Something();
    }
}

他のヒント

私はあなたがあなたの工場からコンクリートタイプを決して返さないことを意味すると思います。たとえば、インターフェイスがある場合は、Isomething、Anstract Class SomethingBase、そして最後にこのインターフェイスを実装して基本クラスから継承するクラスを使用します。作成方法は、ベースタイプのInteadであるインターフェイスタイプを返す必要があります。それがアイデアだと思います。

public ISomething Create() { ... }

それ以外の

public SomethingBase Create() { ... }

カルロス、それが役立つことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top