天气效果中使用多种设计模式示例
来源:互联网 发布:正规淘宝客服交押金吗 编辑:程序博客网 时间:2024/05/16 20:29
1.代理模式
environmentEffec中定义关于雾效,灯光等代理。通过代理,proxy 实现具体的效果
FogProxy * getFogProxy(){return &mFogProxy;};LightProxy * getLightProxy(){return &mLightProxy;};TrivialProxy * getTrivialProxy() {return &mTrivialProxy;}
定义FogProxy, LightProxy,SkyLayerProxy,TrivialProxy 类 以及类中的函数,实现添加雾效,光效,天空等效果.
class FogProxy{public:FogProxy():mFogEnable(false), mFogFar(1000), mFogNear(100), mFogColor(ColorValue::White), mFogDensity(1){};~FogProxy(){};void setFogFar(float fogfar, float alpha);;float getFogFar()const { return mFogFar; };void setFogNear(float fogNear, float alpha);;float getFogNear()const { return mFogNear; };void setFogColor(const ColorValue & color, float alpha);;const ColorValue & getFogColor()const { return mFogColor; };void setFogDensity(float density, float alpha);;float getFogDensity()const { return mFogDensity; };void setFogEnable(bool enable){mFogEnable = enable;}bool getFogEnable()const{return mFogEnable;}protected:float mFogFar;float mFogNear;ColorValue mFogColor;float mFogDensity;bool mFogEnable;};
2.命令模式
创建weathercommand,
class WeatherCommand{public:WeatherCommand(){};virtual ~WeatherCommand(){};virtual void doCommand(EnvironmentEffect * env, float timeAlpha, float regionAlpha, float filterAlpha) = 0;virtual const tstring & getCommandId() = 0;virtual const tstring & getClassId() = 0;void notifyWeather(Weather * weather){mWeather = weather;};protected:Weather * mWeather;};
3.工厂模式
在类weatherCommandFactory中使用工厂模式创建,销毁天气命令。之后可以派生出各种天气命令。class WeatherCommandFactory{public:WeatherCommandFactory();~WeatherCommandFactory();static WeatherCommand * createCommand(const tstring & str, void * param);static void destroyCommand(WeatherCommand * command);typedef WeatherCommand* (*Creator)(void *);static void registerAllCommand();static std::map<tstring , Creator> mCommandCreator;};其中registerAllCommand() 注册各种产生天气命令
0 0
- 天气效果中使用多种设计模式示例
- 将多种设计模式结合使用
- 多种设计模式
- 多种设计模式
- 如何将多种设计模式结合使用(有原代码)
- 如何将多种设计模式结合使用(源代码)
- 二十多种设计模式
- 架构设计之设计模式 (四) Java中多种方式实现单例模式
- java设计模式示例
- java设计模式示例
- java设计模式示例
- java设计模式示例
- java设计模式示例
- java设计模式示例
- java设计模式示例
- java设计模式示例
- java设计模式示例
- java设计模式示例
- Linux下手动安装最新Git
- 前端 - png24格式图片转换为png8图片
- 设计模式(0): 简介及SOLID原则
- eclipse maven plugin 插件 安装 和 配置
- 布尔运算-二维
- 天气效果中使用多种设计模式示例
- 2012年5月SAT香港真题解析
- Android 开源项目android-open-project解析之(三) ScrollView,TimeView,TipView,FlipView
- XP下Sqlserver2005附加数据库为只读的解决方法
- C++静态成员小结
- sedna进行xquery查询
- cordova-android源代码分析
- 呼叫中心的优化经历
- iOS运行时runtime初探(强制获取并修改私有变量,强制增加及修改私有方法等)