0

次のような状況での設計パターンまたは戦略についてアドバイスをいただければ幸いです。

メディアのキューを指定して、適切なプレーヤーを提示するコントローラー クラスがあります。メディアは、ビデオ、オーディオ、またはその他の場合があります。各メディア タイプには対応するプレーヤー タイプがあり、各プレーヤーは再生、一時停止、停止などのメソッドを定義する共通のプロトコルを実装します。コントローラ クラスは現在のプレーヤーへの参照を保持する必要がありますが、そのプレーヤーはいくつかのタイプの 1 つかもしれません。 . 1 つの考えは、id タイプを使用して参照を保持することです。

@property id currentPlayer;

または、スーパークラス Player を作成し、各プレーヤー タイプをサブクラス Player にすることもできます。

@interface VideoPlayer : Player

次に、コントローラー クラスで、Player クラスへの参照を保持し、必要に応じて特定の型にキャストできます。

@property Player *currentPlayer;

どちらのオプションも私には間違っているように見えるので、これを実装するのに役立つ設計パターンまたはその他のより良い戦略があるかどうか疑問に思います。Cocoa または Objective-C の例は特に役に立ちます - ありがとう。

4

2 に答える 2

1

タイプを使用できますid<MyProtocol> currentPlayer;

使用できるプレーヤーの実際のクラスを決定するには[currentPlayer isKindOfClass:[MyPlayerType class]]

于 2013-02-05T02:36:09.957 に答える
1

なぜ使用しないの
id<YourProtocol> currentPlayer; ですか?

于 2013-02-05T02:25:19.527 に答える