求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
要资料
 
 
 

C语言和设计模式 教程
开篇
单件模式
原型模式
组合模式
模板模式
工厂模式
责任链模式
抽象工厂模式
迭代器模式
外观模式
代理模式
享元模式
装饰模式
适配器模式
策略模式
中介者模式
建造者模式
桥接模式
观察者模式
备忘录模式
解释器模式
命令模式
状态模式
访问者模式
继承、封装、多态
 
 

策略模式
856 次浏览
32次  

策略模式就是用统一的方法接口分别对不同类型的数据进行访问。比如说,现在我们想用pc看一部电影,此时应该怎么做呢?看电影嘛,当然需要各种播放电影的方法。rmvb要rmvb格式的方法,avi要avi的方法,mpeg要mpeg的方法。可是事实上,我们完全可以不去管是什么文件格式。因为播放器对所有的操作进行了抽象,不同的文件会自动调用相应的访问方法。

typedef struct _MoviePlay  
{
struct _CommMoviePlay* pCommMoviePlay;

}MoviePlay;

typedef struct _CommMoviePlay
{
HANDLE hFile;
void (*play)(HANDLE hFile);

}CommMoviePlay;

这个时候呢,对于用户来说,统一的文件接口就是MoviePlay。接下来的一个工作,就是编写一个统一的访问接口。

void play_movie_file(struct MoviePlay* pMoviePlay)  
{
CommMoviePlay* pCommMoviePlay;
assert(NULL != pMoviePlay);

pCommMoviePlay = pMoviePlay->pCommMoviePlay;
pCommMoviePlay->play(pCommMoviePlay->hFile);
}

最后的工作就是对不同的hFile进行play的实际操作,写简单一点就是,

void play_avi_file(HANDLE hFile)  
{
printf("play avi file!\n");
}

void play_rmvb_file(HANDLE hFile)
{
printf("play rmvb file!\n");
}

void play_mpeg_file(HANDLE hFile)
{
printf("play mpeg file!\n");
}

 


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



856 次浏览
32次
 捐助