2

フィードから記事を表示するために、いくつかの異なるサービスを使用しています。それらはすべて 1 つの View Controller を使用して表示できますが、ユーザーがどのサービスから来ているかを示すプロパティを作成し、これらの記事で何かを行うたびにそれを確認する必要があります。

私はこの方法の経験があり、スパゲッティコードがたくさんあると信じています。それがどのサービスであるかを確認し、各サービスで何をするかを決定するだけです。少し面倒です。

だから私には2つのオプションがあります:

1 つ目 - すべてのサービスで ArticlesViewController を再利用しますが、どのサービスからの記事かを確認し、それらの記事を編集するときにそれに基づいてさまざまなことを行います。

2番目 - FacebookArticlesViewController、TwitterArticlesViewController、SinaWeiboArticlesViewController (単なる例) をサービスごとに作成し、ロジックを分離します。

最善のアプローチは何だと思いますか?

4

2 に答える 2

5

驚きの第 3 の選択肢!

という名前のプロトコルまたは基本クラスを作成しますArticlesViewControllerSourceDelegate。記事のソースに応じて異なるロジックを配置する場所ごとArticlesViewControllerに、セレクターを に追加しArticlesViewControllerSourceDelegateます。

ArticlesViewControllerSourceDelegate次に、記事のソースごとに の実装またはサブクラスを作成します。

于 2012-10-11T03:40:27.710 に答える
1

コードを複製しないため、最初のオプションの方が優れています。将来、UI を変更する必要がある場合は、1 か所だけ変更する必要があります。2 番目のアプローチを使用する場合は、すべてのビュー コントローラーの内容を変更する必要があり、何かを見逃す可能性が高くなります。

また、できることは、すべての一般的なものを含む親の記事ビュー コントローラーを作成し、多くのカスタマイズが必要なタイプの記事に対してのみ個別の記事ビュー コントローラーを継承することです。

また、記事の違いが UI ではなくビジネス ロジックに大きく関係している場合は、これらすべてを管理する別のビジネス レイヤーを用意することをお勧めします。そしてもちろん、これらのビジネス層に対して、上記の段落で述べたのと同じ種類の継承を実装できます。

于 2012-10-11T03:44:12.160 に答える