在上週的工作中,我們舉行了關於重新思考我們如何進行MVC的會議/演示,其依據的是我們的老闆可能進行的大量研究以及一些其他SO問題的解讀。對我來說一個要點是,當人們說「與數據分開的邏輯」時,我可能會更準確地說出「與您的數據源分開的邏輯」。如果你先做,你可能會陷入貧血域模型。我在這裏糾正?MVC應用程序,這個邏輯屬於哪裏?
其次,我們瞭解到,MVC不包含任何地方的業務邏輯。除了Web應用程序之外,它應該位於單獨的服務層或BLL中。協調這兩點似乎有點棘手 - 按照基本的OOP原則規定,還是在單獨的層中,是否有特定的邏輯與數據對象一起使用?
以下是我現在需要幫助的具體示例。我相當確信這屬於服務層,但我仍然有其他問題。比方說,我有一些行爲需要輸入多個不同類型的不同實體。它運行,然後作爲輸出,它可以修改輸入實體,並生成新的實體作爲記錄。在我的情況下,這是一個遊戲,但你可以說它就像一個交易。涉及多個人員,一些產品和收據。
- 容易的問題,你會把這個邏輯放在哪裏?它是一個獨立的類被實例化嗎?
- 難題(對我而言)是誰負責調用這段代碼?讓控制器執行它會感覺不對。或者完全是它的工作?如果它不能在任何一個特定頁面上運行,但是每當用戶在特定時間之後訪問該站點時該怎麼辦?基礎控制器?
- 一般來說,你如何決定「這屬於我的實體類,以便它不僅僅是一堆吸氣器和二流子」,「這屬於我的服務層」?還是我混淆了......實體類是否屬於服務層?