码迷,mamicode.com
首页 > 其他好文 > 详细

pimpl idiom

时间:2017-08-12 21:20:37      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:compile   设计   简单   define   name   public   cti   head   ack   

pimpl idiom

flyfish 2014-9-30


pimpl是Pointer to implementation的缩写
为什么要使用pimpl
1最小化编译依赖
2接口与实现分离
3可移植

pimpl idiom也被称作Cheshire Cat , Compiler Firewall idiom.,d-pointer
这个技术在设计模式中作为桥接模式(Bridge pattern.)来描写叙述
看MSDN的演示样例

Pimpl header
// my_class.h
class my_class {
   //  ... all public and protected stuff goes here ...
private:
   class impl; unique_ptr<impl> pimpl; // opaque type here
};

Pimpl implementation
// my_class.cpp
class my_class::impl {  // defined privately here
  // ... all private data and functions: all of these
  //     can now change without recompiling callers ...
};
my_class::my_class(): pimpl( new impl )
{
  // ... set impl values ... 
}

实现部分被隐藏在class my_class::impl{......} 中

简单描写叙述就是将一个类切割为两个类,一个提供接口。一个负责实现。


既能最小化编译依赖,又能接口与实现分离。



pimpl idiom

标签:compile   设计   简单   define   name   public   cti   head   ack   

原文地址:http://www.cnblogs.com/yutingliuyl/p/7351361.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!