2011-05-03 105 views
1

我正在開發使用Objective-C和Xcode 4的Mac OS X應用程序,並希望找到處理數據訪問和承擔業務邏輯任務而不必使用CoreData的最佳方式。在Mac OS X應用程序中是否可以使用DAL和BLL圖層?

我從一個.NET MVC背景,通常會通過一個服務層(使用存儲庫模式),以返回可以映射到我的查看數據有我的控制器調用。這將以類似於傳統業務邏輯和數據訪問層的方式工作。

但是在Mac上我的大部分閱讀提示我的模型和控制器應共享與數據填充模型的責任和承接業務和驗證邏輯。

這在我看來有點嚴格,違背了DRY原則,因爲我可能需要重複一些數據接入/業務邏輯操作的其他車型從而不必再編寫代碼THA相同的位。

因此是可行的有一組承接業務/數據訪問邏輯(到SQLite數據庫),其然後可以從任何控制器稱爲類或外部庫?因此,該模型將只包含有關其自身和驗證邏輯的數據?或者這是否違背了核心MVC原則以及在Mac上構建應用程序的方式?

回答

1

是否有特殊原因不能在這種情況下使用核心數據?它針對本地文件系統持久存儲對象進行了高度優化。它還在模型級進行驗證,彷彿一切都被存儲在模型類你怎麼去得到項目的集合,從數據庫,即用戶的列表導致緩存,通知等

+0

不僅僅是我的背景是在.NET中構建使用數據庫和構建多層應用程序的系統。我已經知道如何做到這一點,只是想將它應用到Cocoa,而不是學習一個新的對象圖框架,這將延長已經緊張的項目期限。當我第一次開始開發時,我確實研究過這個問題,但是找不到我想要的關於這個主題的任何好的教程。即用模型等展示CRUD操作。謝謝 – Cragly 2011-05-03 20:10:18

+0

我強烈建議再看看CoreData,因爲您需要自己構建這些功能,這需要時間。只有少數情況下使用它沒有意義。 – 2011-05-03 21:38:25

+0

已經決定和CoreData一起玩了一遍。正如你所說的那樣,它的高度優化和初步陡峭的學習曲線之後,它非常值得。 – Cragly 2011-05-22 13:41:18

0

你所描述的對我來說聽起來像個好主意。把你的驗證和業務邏輯放在你的模型類中是正確使用MVC,並且將數據存儲在一個sqlite數據庫中(模型類與之交談)也是一種常用的方法。

我不確定我們是否與術語在同一頁面上:如果您使用該設計,那麼您的類將執行業務/數據訪問邏輯(對於sqlite數據庫),然後可以從任何控制器「其實模型類。

+0

那是什麼問題?用戶模型類根據標準從數據庫中獲取用戶列表似乎不正確?但是,如果這個功能不屬於模型類,而是屬於一個控制器,那麼我可能在想要獲取用戶列表的其他控制器中存在代碼重複。希望這是有道理的。 – Cragly 2011-05-03 18:10:46

+1

你可以有一個單獨的類來獲取,就像一個單例一樣。要使用它(從你的控制器),你需要提供一些參數,並返回一堆你的模型對象。因此,沒有代碼重複,因爲任何需要獲取用戶的控制器都可以與單例交談。或者,只需在獲取數據的User類上創建類方法(而不是實例方法),然後創建並實例化User對象。這兩種方法都可以在Apple API中找到。 – 2011-05-03 23:37:42

相關問題