2

我正在使用几种不同的服务来显示来自提要的文章。它们都可以使用一个视图控制器显示,但是我必须创建一个属性来指示用户来自哪个服务,并在每次我想对这些文章做某事时检查它。

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

所以我有两个选择:

第一 - 为所有服务重新使用 ArticlesViewController,但检查文章来自哪一个,并在我想编辑这些文章时根据它做不同的事情。

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

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

4

2 回答 2

5

惊喜第三个选项!

创建一个名为 的协议或基类ArticlesViewControllerSourceDelegateArticlesViewController对于根据文章来源而具有不同逻辑的每个地方,将选择器添加到ArticlesViewControllerSourceDelegate.

ArticlesViewControllerSourceDelegate然后为每个文章来源制作一个实现或子类。

于 2012-10-11T03:40:27.710 回答
1

第一个选项更好,因为您不复制任何代码。将来,如果您必须更改 UI,则只需在一处进行更改。如果你采用第二种方法,你将不得不改变所有视图控制器中的东西,你很有可能会错过一些东西。

此外,您可以做的是,创建一个包含所有常见内容的父文章视图控制器,并仅为那些需要大量自定义的文章类型继承单独的文章视图控制器。

如果您的文章中的差异主要与业务逻辑而不是 UI 有关,那么最好让单独的业务层管理所有这些内容。当然,您可以为这些业务层实现我在上面段落中提到的相同类型的继承。

于 2012-10-11T03:44:12.160 回答