サービスクラスとコントローラからビジネスロジックを移動してビジネスクラス内に配置しようとしています。貧血のドメインを避け、データアクセスクラスをドメインクラス内に置かないようにするにはどうすればよいですか?
public interface IFoo{
IBar CreateBar(creationParameters);
}
public class FirstFoo : IFoo{
IBar CreateBar(creationParameters){
return new FirstBar(creationParameter.Id);
}
}
public interface IBar{
void DoSomething();
}
public class FirstBar : IBar{
FirstBar(int id){...}
void DoSomething(){
//well... do something
}
}
public class SecondBar : IBar{
FirstBar(int id){...}
void DoSomething(){
//well... do something else
}
}
のは、私はそれをどのように行うか、またはFirstBar SecondBarを作成する必要があり、それを知っているために、データベースへのアクセスが必要ですSecondFooを作成する必要があると想像してみましょうか? SecondFooのコンストラクタ内にデータソースを挿入しますか?サービスロケータ? IFooからcreateBarを移動しますか?
EDIT:私はファクトリパターンの定義を探していません。createBarメソッドは "changeBar"や "doBusinessWithBar"のようなものです。
これはうまくいくようですが、私たちがこのパターンを悪用すると、私たちはanemycドメインモデルになるでしょうか? –
まあ、必ずしもそうではありません。理想的には、戦略は[この例では](http://codecrafter.blogspot.ca/2012/03/some-oo-design.html)の「TaxEligibilityCheck」のようなドメインの一部です。 –