如何避免域贫乏并避免将数据访问类放在域类中
本文关键字:访问 数据 何避免 | 更新日期: 2023-09-27 18:30:55
我正在尝试将我的业务逻辑移出我的服务类和控制器,并将其放入我的业务类中。
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
}
}
假设我需要创建一个 SecondFoo,它需要访问数据库才能知道它必须创建一个 FirstBar 或 SecondBar,我该怎么做?我将数据源注入 SecondFoo 的构造函数中?服务定位器 ?我将创建栏移出 IFoo ?
编辑:我不是在寻找工厂模式的定义,createBar方法可能是"changeBar"或"doBusinessWithBar"之类的东西。
假设我需要创建一个 SecondFoo,它需要访问数据库才能知道它必须创建一个 FirstBar 或 SecondBar
似乎SecondFoo
需要某种决策逻辑来决定是创建FirstBar
还是SecondBar
。该逻辑可以在策略接口中分解出来,其中数据库访问实现将在生产中使用。您可以通过构造函数注入策略。
IBar CreateBar(creationParameters) {
if (strategy.ShouldCreateFirst(creationParameters)) {
return new FirstBar(creationParameter.Id);
}
else {
return new SecondBar(creationParameter.Id);
}
}