[POSA2] Wrapper Facade
2009-08-01 08:55:09| 分类:
POSA
| 标签:
|举报
|字号大中小 订阅
对底层的 API 进行封装,隔离平台差异,让上层逻辑不需要关心底层细节。让代码中不会出现 #ifdef WIN32 ... #else ... #endif 这类东西。
如何做好 wrapper,要求写 wrapper class 的程序员有丰富的经验,以及对各个不同平台的细节都有深入了解。
一个典型的 Mutex 的例子:
// win32 version
class Thread_Mutex {
public:
Thread_Mutex() { InitializeCriticalSection(&mutex_); }
~Thread_Mutex() { DeleteCriticalSection(&mutex_); }
void acquire() { EnterCriticalSection(&mutex_); }
void release() { LeaveCriticalSection(&mutex_); }
private:
CRITICAL_SECTION mutex_;
Thread_Mutex (const Thread_Mutex &);
void operator= (const Thread_Mutex &);
};
对应的,我们可以写出 linux/solaris 下 Thread_Mutex 的实现,但保持接口都一致。
评论这张
转发至微博
转发至微博
评论