ビジネスロジックをサービスクラスとコントローラーから移動し、ビジネスクラス内に配置しようとしています。
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のコンストラクター内にデータソースを挿入しますか?サービスロケーター?createBarをIFooから移動しますか?
編集:ファクトリパターンの定義を探していません。createBarメソッドは「changeBar」や「doBusinessWithBar」のようなものである可能性があります。