ios - 确定必要变量类型的设计模式

标签 ios objective-c cocoa design-patterns

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

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

@property id currentPlayer;

或者,我可以创建一个父类(super class) Player 并让每个播放器类型都成为 Player 的子类:

@interface VideoPlayer : Player

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

@property Player *currentPlayer;

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

最佳答案

为什么不用
id<YourProtocol> currentPlayer;

关于ios - 确定必要变量类型的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14698514/

相关文章:

ios - 似乎无法删除 CloudKit 中的订阅? `-deleteSubscriptionWithID` 总是返回真

iOS - 显示在 Storyboard 而不是键盘中制作的 UIPIckerView

ios - [NSFunctionExpression _propertyType] : unrecognized selector sent to instance

ios - NSDate。抓取今天之前的所有日期

objective-c - 将 drawAtPoint 与我的 CIImage 结合使用,不会在屏幕上执行任何操作

objective-c - 为什么 NSDictionary 的 key 必须符合 NSCopying

ios - 调用了 deinit 但对象仍在内存中

ios - 如何在 iOS eventKit 中为事件添加警报?

objective-c - 多次重复时,Objective C声音滞后

objective-c - NSTextField - 将所选文本设为粗体、斜体或下划线?