2014-09-29 73 views
1

我的程序中有一些視圖控制器需要一些數據和方向來運行。他們有一個數據源和代理屬性,它們在初始化時設置爲(也許這是問題?)。 使用這些有一段時間後,對於數據沒有改變的簡單用例來說,抽象正在成爲一種痛苦。令人痛苦的是,每個「調用者」都需要實現這些控制器所需的標準數據源和委託方法。這是什麼MVC模式:存根代表和數據源

解決方案?更抽象!這是非常誘人,使中層管理者和使用這樣的:

self.myVC = [[MyViewController alloc] init]; 
id myVCSimpleDataSourceAndDelegate = [[MyVCSimpleDataSourceAndDelegate alloc] init]; 
myVCSimpleDataSourceAndDelegate.data = @[1, 2, 3]; 
myVC.dataSource = myVCSimpleDataSourceAndDelegate; 
myVC.delegate = myVCSimpleDataSourceAndDelegate; 
[self.navigationController pushViewController:myVC animated:YES]; 

這種方法是有吸引力的,因爲,例如,有幾個MyViewController是我的主視圖控制器的交易,只有一對夫婦不同的使用情況。目前,這使得我的主視圖控制器中的大部分代碼都集中在該管理上,這可以緩解這種情況。

這種方法的可怕部分是我以前從來沒有聽說過這種模式,並且我很想發明新的抽象類型。

這是「中層管理者」一個已知的設計模式,還是這種方法是一種MVC反模式?

+0

你說的「來電者的意思「in:」每個調用者需要實現這些控制器所需的標準數據源和委託方法「? – danh 2014-09-29 04:37:09

回答