2012-10-11 38 views
2

我正在使用一些不同的服务来显示来自提要的文章。它们都可以使用一个视图控制器来显示,但是我必须创建一个属性来指示用户来自哪个服务,并在每次我想对这些文章执行某些操作时检查它。重新使用视图控制器更好还是更好地分离逻辑

我有这种方法的经验 - 并相信我有很多意大利面条代码,只是为了检查它是哪种服务,决定每种服务做什么,这有点混乱。

所以,我有两个选择:

月1日 - 重复使用ArticlesViewController的所有服务,但检查由哪一个是来自哪里的文章,并以此为基础进行不同的事情时,我想编辑的文章。

第2步 - 为每个服务制作FacebookArticlesViewController,TwitterArticlesViewController,SinaWeiboArticlesViewController(只是示例),并将逻辑分开。

您认为最好的方法是什么?

回答

1

第1个选项更好,因为您不重复任何代码。将来如果你不得不改变UI,你只能在一个地方改变它。如果你采用第二种方法,你将不得不改变所有视图控制器中的东西,并且很有可能会错过某些东西。

此外,你可以做的是,创建一个父项文章视图控制器与所有常见的东西,并继承单独的文章视图控制器仅适用于那些需要大量定制的文章类型。

如果您的文章中的差异主要与业务逻辑而不是UI相关,那么最好有独立的业务层管理所有这些东西。当然,您可以实现上述段落中针对这些业务层提到的相同类型的继承。

+0

我喜欢这种方法,谢谢。 – Devfly

5

惊喜第三选择!

制定一个名为ArticlesViewControllerSourceDelegate的协议或基类。对于ArticlesViewController中的每个地方,您将根据文章来源获得不同的逻辑,请将选择器添加到ArticlesViewControllerSourceDelegate

然后为每个文章源创建一个实现或ArticlesViewControllerSourceDelegate的子类。

相关问题