0

我希望就以下情况的设计模式或策略获得一些建议:

我有一个控制器类,给定一个媒体队列,它应该呈现一个合适的播放器。媒体可以是视频、音频或其他。每个媒体类型都有一个对应的播放器类型,每个播放器都实现了一个通用协议,该协议定义了播放、暂停、停止等方法。控制器类需要保留对当前播放器的引用,尽管该播放器可能是几种类型之一. 一种想法是使用 id 类型保留引用:

@property id currentPlayer;

或者,我可以创建一个超类 Player 并让每个玩家类型子类 Player:

@interface VideoPlayer : Player

然后在控制器类中,我可以保留对 Player 类的引用,并在需要时将其转换为特定类型:

@property Player *currentPlayer;

这两个选项对我来说似乎都是错误的,所以我想知道是否有设计模式或其他更好的策略可以帮助我实现这一点。Cocoa 或 Objective-C 中的任何示例都会特别有帮助 - 谢谢。

4

2 回答 2

1

为什么不使用
id<YourProtocol> currentPlayer;

于 2013-02-05T02:25:19.527 回答
1

您可以使用类型id<MyProtocol> currentPlayer;

要确定您可以使用的实际播放器类别[currentPlayer isKindOfClass:[MyPlayerType class]]

于 2013-02-05T02:36:09.957 回答