はつ界面領域の主体に良し悪しの練習?なぜですか?
-
05-07-2019 - |
質問
一見の一部DDD企業のアプリに属しており、利用できるインタフェースと同一のドメイン団体は、一対一のマッピングの機能を持つ実際のドメインオブジェクトは常に使用で一対一のインターフェイス、およびすべてのドメイン主体の持つ独立したインタフェースです。
例えば:
ドメインのオブジェクトアカウント:
public class Account : IAccount
{
public string Name {get;set;}
//...some more fields that are also in IAccount
public decimal Balance {get;set;}
}
でのマッチングタ
public interface IAccount
{
string Name {get;set;}
//... all the fields in Account
decimal Balance {get;set;}
}
でも、最近いないことは、実際には、抗パターンです。
を行ったので一部の建築家のオープンソースコミュニティ、そこは設計ミスや欠陥、どこかのチェーンのデザイン。
なので私は同僚なければならないというの作成を終了インタフェースのドメインのオブジェクト。があるので目的のみに利用し、更新のときはを更新ドメインの機関となった。
第一の請求項について、これらのインタフェースの提供を行/減結合回路網がいカウンターでのインタフェースを持つ関係のドメイン事業体といを提供するデカップリング、インタフェースの手段の変化は、ドメインの実体その逆も成り立ちます。
次の請求はいを必要としているインタフェースを試験す。私のカウンターサイ-疑似を嘲笑うとstubbingコンクリート。ものを請求するサイ-疑似トレーニングマニュアルと、修了をコンクリート。わからない場合は購入した場合でも、サイ-疑似トレーニングマニュアルと、修了をコンクリートクラスないしはインタフェースのドメインの機関となった。
なので私は:
なぜてはいかがですかつインタフェースのドメイン業?
はいかがでしょうか?
なぜなので良し悪しの練習?
感謝。
編集:私はあることに注意しなければ使っていインタフェースすべてにしてしまったということもあってだというのために利用しますインターフェースの帽子。しかし、具体的にはつのドメイン事業体との一対一のインタフェース
解決
いくつかの実践に記載のですが---
ある特定の理由この界面が必要と異なっている場合には、そのドメイン団体、ものになっているので右側のマッピングしました。その疑いい人もいます。の懸念があるかどうかという問題についてのインターフェースのたところで、自分が本当にやりた設計かっただけで投入の不足を回/過去半年.
使用例では、IAccountインターフェース、または記述して公開setterか、セッターアカウントに、オブジェクトもう少し奇妙なるものを使用する口座にて設定する必要のバランスのアカウントすることを暗黙の許可を指定したレベルでのインタフェース。あなシステムにしたい単にチェックが設定されていない口座のバランスでしょうか。
他のヒント
最大の理由は常に特定のドメインのオブジェをインターフェイスの代わりに直接授業ではありますが自由度に実装されます。おばいいのようにIAccountので、ちょっとredunant.
もうまった場合、例えば:
public class Account : IAccount { ... } // Usual account, persistent
public class MockAccount : IAccount { ... } // Test mock object
public class TransAccount : IAccount { ... } // Account, not persistent
public class SimAccount : IAccount { ... } // Account in a performance sim
ものとなっているか。
を定義するドメインのオブジェをインターフェイスでの実装を乱さずにドメイン定義で設定します。
一般の場合、私の授業はならないストールするとデザインパターンのような戦略やビジんが、追加インタフェース
追加インタフェースが本当に役立つデザインパターンのような戦略は、お客様が多いカーボンコピーのsetterか、セッターにすることができます。代わりに、私が作成したインターフェースの特定のデザインパターンフ作成します.
interface SomeStrategy {
void doSomething(StrategyData data);
}
interface StrategyData {
String getProperty1();
String getProperty2();
}
できるだろうのドメインクラス実施者のインターフェイス、または利用のアダプタのパターンです。だが、こうしたしくみは、クリーナーアプローチだけで作インタフェースです。
デザインは常に不確実性を減ら.作インタフェースのためにな不確実性を減らし、実際にはそれぞれの増加の混乱からなるものなのかということである。
一対一のインタフェース主体は、抗パターン
ジェームズ-グレゴリーでよく こちらの.
おっしゃるとおりですね。界面に行動すべきとの間の契約とはありませんから価値を持つ界面領域の機関となった。役立つ場合がありますのでうまく抽象的に一定活動しています。でも、この場合があります。
なぜこのかけ声倒れ?
私は見るためのインターフェースのドメインのオブジェクトとしてチャーリー-マーティンとなってい選ぶように実装されます。
基本的な例である識別子オブジェクトです。Id)をオブジェクトでは、これによって異なっているオブジェクトの責任ではないで休の実施、データです。SQLサーバーすることを知らせるautonumberが紺碧テーブル保存することを知らせることでがんのビジネスロジックのアプリで変更する場店です。
私がいないを選択してドメインのオブジェクト続きで使用することが発表層にもよります対象のアプリです。が追加設定の共通ドメインのインタフェースを共通層のきくサービスに対して再利用しています。
この引数に何をすべきは、住所まったIAddress、新しいプログラマーが書き換えもクレジットカードの場合なICreditCard.
The anti-パターンレーベルの悪い用語は、以上の簡素化を記述するためのソリューションの複雑さや多様な事ができます。
ある場所のほとんどのパターンもmalignedシングルトンは、そのな"反-パターン"に、少なくともそもこの期間と理解することが可能である。