3
我試圖將我的業務邏輯從我的服務類和我的控制器中移出,並將其放入我的業務類中。如何避免貧血域並避免將您的數據訪問類放入您的域類中?
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的構造函數中?服務定位器?我將createBar移出IFoo?
編輯:我不是在尋找工廠模式的定義,createBar方法可能是像「changeBar」或「doBusinessWithBar」。
這看起來很好,但如果我們濫用這種模式,我們將最終得到一個anemyc域模型嗎? – 2012-04-13 07:08:32
嗯,不一定。理想情況下,策略是該域的一部分,如[本示例]中的TaxEligibilityCheck(http://codecrafter.blogspot.ca/2012/03/some-oo-design.html)。 – 2012-04-13 09:57:27