2012-10-11 52 views
2

我正在使用一些不同的服務來顯示來自提要的文章。它們都可以使用一個視圖控制器來顯示,但是我必須創建一個屬性來指示用戶來自哪個服務,並在每次我想對這些文章執行某些操作時檢查它。重新使用視圖控制器更好還是更好地分離邏輯

我有這種方法的經驗 - 並相信我有很多意大利麪條代碼,只是爲了檢查它是哪種服務,決定每種服務做什麼,這有點混亂。

所以,我有兩個選擇:

月1日 - 重複使用ArticlesViewController的所有服務,但檢查由哪一個是來自哪裏的文章,並以此爲基礎進行不同的事情時,我想編輯的文章。

第2步 - 爲每個服務製作FacebookArticlesViewController,TwitterArticlesViewController,SinaWeiboArticlesViewController(只是示例),並將邏輯分開。

您認爲最好的方法是什麼?

回答

1

第1個選項更好,因爲您不重複任何代碼。將來如果你不得不改變UI,你只能在一個地方改變它。如果你採用第二種方法,你將不得不改變所有視圖控制器中的東西,並且很有可能會錯過某些東西。

此外,你可以做的是,創建一個父項文章視圖控制器與所有常見的東西,並繼承單獨的文章視圖控制器僅適用於那些需要大量定製的文章類型。

如果您的文章中的差異主要與業務邏輯而不是UI相關,那麼最好有獨立的業務層管理所有這些東西。當然,您可以實現上述段落中針對這些業務層提到的相同類型的繼承。

+0

我喜歡這種方法,謝謝。 – Devfly

5

驚喜第三選擇!

制定一個名爲ArticlesViewControllerSourceDelegate的協議或基類。對於ArticlesViewController中的每個地方,您將根據文章來源獲得不同的邏輯,請將選擇器添加到ArticlesViewControllerSourceDelegate

然後爲每個文章源創建一個實現或ArticlesViewControllerSourceDelegate的子類。

相關問題