我有一个基类MyDevice
。我也有一个基类MyDeviceController
:
@interface MyDeviceController : NSObject {
MyDevice* device;
}
@property (retain) MyDevice* device;
@end
MyDeviceController 在设备的设置器中有一些通用逻辑,我想保留在子类中。
我有 2 个 MyDevice 子类:
@interface MyAudioDevice : MyDevice
- (void)audioMethod;
@end
和
@interface MyVideoDevice : MyDevice
- (void)videoMethod;
@end
MyDeviceController
以及:的两个子类,MyVideoDeviceController
它们MyAudioDeviceController
必须有一个MyVideoDevice
andMyAudioDevice
作为device
属性。
实现这两个 MyDeviceController 子类的最佳方法是什么?或者对于这种情况可能有一些模式?
更新
我找到的第一个解决方案是重新声明属性My[Audio|Video]DeviceController
:
@interface MyAudioDeviceController : MyDeviceController
@property (retain) MyAudioDevice* device;
@end
并在实施中
@implementation MyAudioDeviceController
- (void)setDevice:(MyAudioDevice*)device
{
NSAssert([device isKindOfClass:[MyAudioDevice class]], @"What's the...?");
[super setDevice:device];
}
- (MyAudioDevice*)device
{
return (MyAudioDevice*)[super device];
}
@end
在这个解决方案中我唯一不喜欢的是重新定义device
方法。
可能有另一种解决方案吗?