1

私はMacOSXの開発を学んでおり、さまざまな記事やAaron Hillegassの本を読んでいると、Macベースのアプリで使用するのにMVCが推奨されるデザインパターンのようです。

しかし、コントローラークラス/オブジェクトをいつどのように導入する必要があるのか​​、そしていくつ使用する必要があるのか​​についての指示は見つかりませんでした。

だから私の質問は:

通常、CocoaベースのMac OS Xアプリには1つまたは複数のコントローラークラスがありますか?複数ある場合、新しいコントローラークラスを導入するための基準は何ですか?コントローラクラスはどのように相互作用しますか、またはそうではなく、そのような相互作用の必要はありませんか?

4

1 に答える 1

2

これは、アプリケーションを理解しやすくし、コードを整理しておくことの一部であり、個人的な好みの問題でもあります。

AddressBook.appのような単純なアプリケーションは、単一のコントローラーレイヤーオブジェクトでうまくいく可能性があります。このオブジェクトは、ユーザーとユーザーおよびグループとの対話を管理できます。また、PersonコントローラーとGroupコントローラーがあり、それぞれがそれぞれのUI(グループUIからグループコントローラーなど)とデータコンテナー(グループのリストとユーザーのリスト)の間の相互作用を調整します。また、グループを表示する場合は、そのグループに属するユーザーのリスト)。わざわざここまで進んでいる場合は、グループや人々に固有ではないコードを隠しておくためのウィンドウコントローラーがあるかもしれません。つまり、グループモードと個人モードの間のUIの再構成を管理するコードは、このUIを含むウィンドウのウィンドウコントローラーに配置される可能性があります。

複雑なアプリケーションには、多数のコントローラーが含まれる場合があります。各ウィンドウにコントローラーがあり、ウィンドウは、アプリケーションの1つの側面専用の自己完結型のコントロールセットの各インスタンスにコントローラーを所有している場合があります。UI以外のアイテム(ネットワーク接続/ダウンロード、ユーザーセッション、接続された周辺機器の物理的状態など)を管理するコントローラーが含まれている場合があります。それは本当にあなたのアプリケーションとデザインのニーズに依存します。

アプリケーションアーキテクチャは、ソフトウェア開発の重要視されていない側面です。アプリケーションの存続期間にわたって優れたアーキテクチャを選択して維持することは、「この機能を1日で追加できる」と「アプリを追加できるようにするには、アプリの一部/半分/ほとんどを完全に書き直す必要がある」の違いを意味する場合があります。この機能のようなもの」。それは科学と芸術の一部であり、単に経験を積むだけです(そして、例としてお気に入りのオープンソースプロジェクトのアーキテクチャに目を光らせておいてください)。

覚えておくべき重要なことは次のとおりです。コントローラーレイヤーは、アプリに最も固有のレイヤーです(通常、再利用性が最も低い部分-NSArrayControllerのような意図的に再利用可能なコントローラーは耐えられません)。それがあなたのアプリをあなたのアプリにするものです。そのモデルは他のアプリやそのビューにも再利用できる可能性がありますが、コントローラーレイヤーはアプリの「魂」です。

これがお役に立てば幸いです。

于 2013-01-30T14:41:29.963 に答える