私はベースクラスMyDevice
を持っています。また、私は、基本クラスMyDeviceController
を持っている:Objective-Cプロパティ/継承/デザインアドバイス
@interface MyDeviceController : NSObject {
MyDevice* device;
}
@property (retain) MyDevice* device;
@end
MyDeviceControllerは、私はサブクラスで残しておきたいデバイスのセッターではいくつかの共通のロジックを持っています。
私はMYDEVICEの2つのサブクラスがありますMyDeviceController
の
@interface MyAudioDevice : MyDevice
- (void)audioMethod;
@end
と
@interface MyVideoDevice : MyDevice
- (void)videoMethod;
@end
そして、2つのサブクラス:MyVideoDeviceController
とMyAudioDeviceController
device
プロパティとしてMyVideoDevice
とMyAudioDevice
を持っている必要があります。
MyDeviceControllerのこの2つのサブクラスを実装する最良の方法は何ですか?あるいは、そのような場合にはいくつかのパターンがあるかもしれませんか?
@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
私は、このソリューションには好きではない唯一のもの:
は、私が最初に見つかったソリューションがMy[Audio|Video]DeviceController
でプロパティを再宣言することです
を更新しましたdevice
メソッドの再定義です。
他にも解決策がありますか?
コントローラは、任意のタイプのデバイスを受け入れることができるようmydeviceにするためのインターフェース(Iは、Objective-Cであっ呼ば忘れ)(S)と、そのプログラムを使用します。 –
@TomIngram:プロトコルは – dreamlax