私はこのようなジレンマを持っています:
親クラスMediaPlayer
があり、そこからいくつかのサブクラスが拡張されます。たとえば、それらはMediaPlayerSub1
MediaPlayerSub2
MediaPlayerSub3
すべて、いくつかの異なるメソッドを拡張します。
私のクライアントでは、さまざまな状況でさまざまなサブクラスを使用したいので、困難に直面しています:使用するときは、MediaPlayer
常にどのサブクラスであるかを判断する必要があります。たとえば:
MediaPlayer mMediaPlayer = initPlayer()
// ... do some operation from MediaPlayer
// ... do operation from sub class
if (mMediaPlayer instanceof MediaPlayerSub1) {
mMediaPlayer = (MediaPlayerSub1)mMediaPlayer;
// ... do operation from MediaPlayerSub1
} else if (mMediaPlayer instanceof MediaPlayerSub2) {
mMediaPlayer = (MediaPlayerSub2)mMediaPlayer;
// ... do operation from MediaPlayerSub2
} else if (mMediaPlayer instanceof MediaPlayerSub3) {
mMediaPlayer = (MediaPlayerSub3)mMediaPlayer;
// ... do operation from MediaPlayerSub3
}
結合を減らすためにコードをリファクタリングするより良い選択肢はありますか?