2012-03-25 35 views
1

我正在掌握iOS和使用不同的框架。我的項目變得越來越複雜(當然),我想我正在以一種複雜的方式做一些事情。我的代表的代表是...(設計模式)

我想知道是否有一個更簡單的設計模式來處理這種情況:

應用有很多陣列中的持有性的;還包含代表每個屬性選項的NSDictionaries的NSDictionary。

屬性編輯器:呈現表格,表格中詳細視圖編輯選項顯示當前屬性

詳情查看:針對特定財產

我已經得到了所有的選項顯示錶現在這個工作通過:

應用程序 - >將自己設置爲代表屬性編輯器訪問del博意門的(應用程序)的當前特性和屬性選項

屬性編輯器陣列 - >套本身作爲代表每個詳細視圖並設置屬性上詳細視圖表示從代表的屬性選項相應的數組

詳細視圖 - >適當的財產選擇陣列

這似乎相當複雜。 Detail View代表我的App會更好嗎?有沒有更清晰的設計模式?我意識到所有這些類之間有緊密的耦合,但我不明白這是如何避免的。

回答

1

爲什麼不創建一個用於訪問所有應用程序屬性的單例類(我們稱之爲PropertiesContainer)。本課程將舉行必要的字典,並將由[PropertiesContainer sharedInstance]訪問。

這樣,您提到的所有類都不需要與每個類耦合以訪問屬性。現在您將擁有一門可以隨時隨地訪問的課程。 (和它並不需要知道誰使用它)

+0

謝謝。我從來沒有使用'sharedInstance' - 將不得不閱讀它。聽起來像它會更清晰概念+比我現在工作的比扎羅方式更可維護。 – 2012-03-25 15:16:09

+0

看看這裏:http://iphone.galloway.me.uk/iphone-sdktutorials/singleton-classes/ – giorashc 2012-03-25 15:28:29

+0

似乎工作太棒了!再次感謝 – 2012-03-25 19:38:45

1

使用MVC模式,你可以創建一個模型對象持有的全部財產樹,並用它與每個視圖或編輯器來傳遞恰當子樹。

模型對象不一定要創建爲單身,只是有應用程序創建和保留只有一個(或多達需要)。

+0

但我會處於相同的情況,** RootView A **必須將它傳遞給它(或者將自身設置爲委託)或者將PropertyTableView B **傳遞給它(或者設置它自己作爲委託)到** PropertyDetailView C **,因此C可以訪問該特定屬性的可用選項列表。這讓我回到'self.delegate.delegate.dictionaryOfOptions' - 除非我誤解你的意思。 – 2012-03-25 19:37:54

+0

如果您不需要在模型之外過濾屬性數據庫,只需將該一個模型對象作爲數據源委派的一切。 – hotpaw2 2012-03-25 19:46:03