调用多个接口方法实现的Media Player该用何模式?
辉歌 2005-03-11 03:15:18 正在用DirectShow做一个media player。
特色是每种功能有一专门的接口提供。Player已经拥有这些接口。即:
class CMyPlayer
{
IMediaControl* pControl;
IAudioControl* pAudioControl;
IVideoControl* pVideoControl;
ISeekingControl* pSeeking;
.....};
主要功能是:
1,Seeking方面的控制。
由ISeekingControl提供。得到当前是否可以Seeking,当前位置,设置新位置等。
2,IVideoControl
设置全屏,查询全屏状态。
3,IAudioControl
设置音量,静音。
4,IMediaControl
play,stop,pause
我现在的做法是:
每个接口用一个类来封装,
ISeeking --->
CSeeking
{
ISeeking* pSeeking;
};
然后在类中实现方法。
最后就是:
class CPlayer
{
CSeeking* pSeeking;
CAudioControl * pAudio
.....
};
最后,客户通过CPlayer来控制媒体播放。由CPlayer将动作转发到各自封装的类中。
如:
CPlayer::Play()
{
pMediaControl->Play();
}
我感觉这么做很繁琐,应该有什么模式可以套用的吧,可是不知道该用什么模式。现在组长要求我实现查看媒体播放的状态信息,就是看当前的播放速率,媒体格式等。假设该功能又需要一个新的接口提供,是不是又得新封装类,加实例?有简单的方法么?