我有一个这样的困境:
我有父类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
}
我是否有更好的选择来重构代码以减少耦合?