2016-11-23 8 views
0

私はView Controllerのモデルとして機能するオブジェクトを持っています。それをHomeScreenModelと呼んでください。 HomeScreenModelDeviceStateUpdateModelNewFirmwareVersionCheckModelなどがラッパーの一種として機能HomeScreenModelのような他のサブモデルが含まれていますが、またそれは自身の機能だ実装しています。これらのモデルはすべて、独自のパブリックメソッドと定義された委任プロトコルを持っています。一部のサブモデルでは、View Controllerとの直接通信のみが必要です。つまり、HomeScreenModelは、ビューコントローラとの間の仲介者としてのみ機能します。DeviceStateUpdateModel; DeviceStateUpdateModelのデリゲートとして、ビューコントローラの委譲オブジェクトとして機能します。 DeviceStateUpdateModelからの呼び出しを受け入れ、View Controllerと同じ呼び出しを行います。Objective c内のView Controllerとサブモデル間の委譲を実装するための洗練された方法

これを実装するためのより良い方法はあり、HomeScreenModelのプロトコルにDeviceStateUpdateModelからプロトコルメソッドを複製伴わないのですか?モデルを1つのクラスに収めるために大きくする必要があり、分割する必要がある場合でも、View Controllerの1つの全体モデルとして見えるパターンはどのようなパターンですか?

答えて

0

HomeScreenModelに、おそらくプロトコルのtypedefとして依存関係を注入できます。

typedef HomeScreenProtocolManager id<DeviceStateUpdateModelDelegate>; 

その後HomeScreenProtocolManagerのような初期化子があります:

ので、HomeScreenModelにのようなものがある

- (instancetype) initWithProtocolManager:(HomeScreenProtocolManager *) protocolManager { ... }; 

店を、このクラスのプロパティとしてprotocolManagerとそれに委譲など。 typedefに複数のプロトコルを含めるのは構文上問題ありません。

関連する問題