ドメインレイヤーのセパレートインターフェイス

Find メソッドだけではなく、Insert・Update・Delete もドメインレイヤーのセパレートインターフェイスに含めるべきな気がする。 (つーかそれが普通?)
例えば書籍を削除する時、書籍を格納している棚から、参照を削除する必要があるけど、これはドメインレイヤーで処理する (というか定める) べきビジネスロジックになるんじゃないか?


あと、セパレートインターフェイスにはドメインオブジェクトを生成するための protected なメソッドを用意して、ドメインオブジェクトのコンストラクタは internal にするべきだ。Find メソッドや Insert メソッドを実装する際は、この protected メソッド でドメインオブジェクトを生成する。
そうすれば、ドメインオブジェクトの生成をドメインレイヤーとデータマッパー以外から行えなくできる。


そうすると、更にドメインオブジェクトの各プロパティのセッターも internal にした方がいいかも?やはりこれもセパレートインターフェイスに protected メソッドを用意して、データマッパーからのみ変更ができるようにすると。


というわけで、セパレートインターフェイスは抽象クラスにして、こういったビジネスロジックを実装しておくと良いと思ふ。