DDDブック、エリックエヴァンス:「工場は、作成されたコンクリートクラスではなく、目的のタイプに抽象化する必要がある」とはどういう意味ですか?
-
25-09-2019 - |
質問
エリック・エヴァンスによる本ドメイン駆動型のデザインでは、「工場」のセクションの第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() { ... }
カルロス、それが役立つことを願っています。
所属していません StackOverflow