I have a dilemma like this:
I have parent class MediaPlayer
, then some subclass extends from it, let's say they are MediaPlayerSub1
MediaPlayerSub2
MediaPlayerSub3
, all of they extend some differnt methods.
In my client, I want use different subclass in different situation, so I am faced with difficulties: when I use MediaPlayer
I always need to judge which subclass it is, for example:
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
}
Do I have better choice to refactor the code to reduce the coupling?