我意識到在n層設計中已經有了很多帖子,這可能是我思考問題並圍繞圈子進行的,但是我現在都會感到困惑,並且會希望從社區中獲得一些清晰的信息。N層架構設計關注點分離
我想我創建了一個項目分開,(並沒有設計架構非常好下手),出到不同的層(各自在自己的項目):
- UI
- 業務對象
- 邏輯/業務
- DAL
的UI只調用邏輯層來獲得它的東西
的的Business Objects不應調用或者有別的引用,只是存儲數據的方式
的邏輯/BUSINESS層應該包含所有的方法來獲取,創建,更新,刪除(CRUD)系統中的對象,並且同時引用BO和DAL。它會將業務邏輯應用於操作,然後將實際的CRUD委託給DAL。
DAL只會對數據庫執行CRUD操作。它會提及BO,因爲它會將它們返回給Gets等。
我的問題是邏輯類應該只調用它們的等效DAL類,而不是調用邏輯類?換句話說,CompanyLogic
班只應該撥打CompanyDAL
班。因此,如果它想通過ID獲取A Client對象,它將調用ClientLogic.GetClientByID(int)
而不是ClientDAL.GetClientByID(int)
。
我想這也許應該留在自己的層上的原因是:
這似乎放鬆
怎麼樣的邏輯項目之間的耦合,如果得到一個客戶端對象在其中有一些邏輯驗證(可能不是最好的例子,但希望它能得到)。
編輯:
我不知道,如果它是壞的設計由我,但此刻的業務層有很多類,包括ClientBULL和CompnayBULL,這兩個類有一個呼叫另一個。我爲每個類使用一個接口,並且有一個工廠來構建對象以嘗試並減少任何耦合,但現在由於在這兩個類中都調用方法,它們不能彼此存在。這是一個壞主意嗎?
完全同意接口。我走了這條路,並「試圖」創建一個工廠來生產每種混凝土類型。我的執行有問題,但會另存文章。關於標題LOGIC的觀點很好,謝謝... – Jon 2009-04-18 13:45:27