设为首页 加入收藏

TOP

《游戏编程模式》(6)(三)
2017-10-13 10:39:19 】 浏览:9012
Tags:《游戏编程模式》
7 };

getAudio返回一个引用而不是指针,因为在C++里理论上一个引用不会为NULL,返回一个引用提示了使用者任何时候都能期望得到一个有效的对象。

空服务可以保证在Locator初始化之前使用它的安全性,也可以用来实现暂时禁用服务:

1 Locator::provide(NULL);

 

日志装饰器:

 1 class LoggedAudio : public Audio
 2 {
 3 
 4 public:
 5   LoggedAudio(Audio &wrapped)
 6   : wrapped_(wrapped)
 7   {} 
 8 
 9   virtual void playSound(int soundID)
10   {
11     log("play sound");
12     wrapped_.playSound(soundID);
13   }
14 
15   virtual void stopSound(int soundID)
16   {
17     log("stop sound");
18     wrapped_.stopSound(soundID);
19   } 
20 
21   virtual void stopAllSounds()
22   {
23     log("stop all sounds");
24     wrapped_.stopAllSounds();
25   }
26 
27 private:
28   void log(const char* message)
29   {
30     // Code to log message...
31   } 
32 
33   Audio &wrapped_;
34 
35 };

 

1. 如果服务被限制在游戏的一个单独域中,那就把服务的作用域限制到类中

    eg.获取网络访问的服务就可能应该被限制在联网的类中

2.广泛使用的服务,作用域为全局域

    eg.日志服务应该是全局的

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MediatorPattern(中介者模式) 下一篇《游戏编程模式》(7)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目