我希望在以下情况下获得有关设计模式或策略的建议:
我有一个控制器类,给定一个媒体队列,应该提供一个合适的玩家。媒体可以是视频,音频或其他。每种媒体类型都有相应的播放器类型,每个播放器实现一个共同的协议,定义播放,暂停,停止等方法。控制器类需要保持对当前播放器的引用,尽管该播放器可能是几种类型之一。一种想法是使用id类型保持引用:
@property id currentPlayer;
或者,我可以创建一个超类Player并让每个玩家类型为子类Player:
@interface VideoPlayer : Player
然后在控制器类中,我可以保留对Player类的引用,并在需要时将其转换为特定类型:
@property Player *currentPlayer;
这两个选项对我来说都是错误的,所以我想知道是否有设计模式或其他更好的策略可以帮助我实现这一点。 Cocoa或Objective-C中的任何示例都会特别有用 - 谢谢。
答案 0 :(得分:1)
为什么不使用
id<YourProtocol> currentPlayer;
?
答案 1 :(得分:1)
您可以使用id<MyProtocol> currentPlayer;
要确定您可以使用[currentPlayer isKindOfClass:[MyPlayerType class]]