2016-05-25 19 views
0

iOSアプリケーションのほとんどはMVCデザインパターンに基づいており、私たちは長年にわたって私たちのアプリケーション内でシングルトンクラスを使用しています。私は、シングルトン自体がデザインパターンであり、多くの人がそれをアンチパターンとみなし、シングルトンについては良い悪いものとみなしています。iOSシングルトンクラス(MVCアーキテクチャ内)

しかし、MVCをアプリケーション開発の全体的なアーキテクチャーとして考えると、シングルトンはどこに分類されるのか理解したいと思います。それはモデルかビューかコントローラか?もしそうなら、なぜですか?これら3つのいずれにも属していなければ、それは何ですか?

これは愚かな疑問に思えるかもしれませんが、評判の良い会社のインタビューでこの質問を受けたので、迷惑をかけることがあります。

答えて

2

MVCはアーキテクチャパターンですが、シングルトンは設計パターンです。 2つの事柄は関連していないので、シングルトンはMVCでは「何も」ありません。

シングルトンの使用に関する政治的議論を除いて、理論上は、モデル、ビューまたはコントローラクラスをシングルトンにすることができます。

iOS SDK内で、ViewControllerはランタイムによって作成され、破棄されます。つまり、理論に関係なく、そのコンテキストではシングルトンになることは非論理的です。

もっと可能性の高いシナリオは、モデルを複数のビューで使用できるようにすることです。依存関係注入フレームワーク、またはコンストラクタインジェクションを介してアクセスできるSingletonをモデルにすることができます。その場合、あなたのクラスはModelクラスとSingletonです。彼らは相互に排他的ではありません。

あなたのインタビュアーが何を意味しているのだろうか?iOSアプリケーションでシングルトンをどこで使用したいのですか?その場合、正解はモデルになります。

+1

View Controllerは、必要に応じて作成されることが多く、不要になったときに自動的に割り当てが解除されます。そのような種類のビューコントローラはシングルトンにはなり得ませんでした。あなたのビューコントローラがシングルトンの場合、私はあなたの決定に疑問を呈します。一方、Modelクラスの場合、シングルトンであることはまったく珍しいことではありません。 – gnasher729

+1

私は '理論上'と言っています。投稿はMVCについて、ios開発フレームワークで可能なことではないと尋ねています。質問はベストプラクティスに関するものではなく、シングルトンがMVCの「一部」であり、それはインタビューで誰かに尋ねる論理的な質問ではありません。その質問が実際に「どこにあなたがiOSアプリケーションでシングルトンを最も使いたいと思うか」だったら、それは答えを変えるでしょう...私は明確にするために編集します。 – Toby

関連する問題