我想根據最佳實踐來構建我的WPF MVVM應用程序。我必須從很多現有的代碼開始,因此不能立即解決所有結構缺陷。我喜歡以下解決方案結構。業務對象和業務邏輯有什麼區別
此分離溶液分爲以下項目; BusinessLogic,BusinessObjects,基礎設施(通用可重用實用程序),WPF Shell和模塊(使用IOC容器注入的應用程序組件)。
我知道業務對象表示人類世界的實體,而業務邏輯是這個問題中討論的實現細節。
What are Business Objects and what is Business Logic?
因此,使用MVVM沒有業務對象只是成爲一個愚蠢的容器實際上並沒有做任何其他不是等到有其性質由外部業務邏輯改變了嗎?我沒有看到如何將業務對象從業務邏輯中分離出來,以便能夠將它們放在單獨的程序集中。
採取以下巨大簡化的代碼:
public class Chart
{
private SizeChart _activeChartSize = new SizeChart();
public void Draw() {
// Size the chart object
_activeChartSize.Size(this);
// Do other draw related things
}
}
public class SizeChart
{
public void Size(Chart chartToSize) {
// Manipulate the chart object size
}
}
在上述(我的腦海裏至少)MVVM溶液結構的SizeChart類將是業務邏輯和圖表類將是一個業務的上下文中對象,但將它們放置在不同的項目中將是循環依賴。是SizeChart類業務邏輯還是業務對象,以及如果我採用此提議的MVVM解決方案結構,SizeChart類應該位於解決方案結構中的什麼位置?
道歉,如果對某些人來說這是一個難以置信的明顯而簡單的問題,但是當你無法從一塊乾淨的板岩開始知道如何最好地開始將結構不良的代碼轉換爲結構良好的代碼時很困難。
我不認爲將業務邏輯與其對象分開是一個好主意,因爲這會導致[貧血域模型](http://en.wikipedia.org/wiki/Anemic_domain_model)。 – 2012-03-19 11:56:04