Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 瘦适配器与厚适配器(包装器)示例_C++_Design Patterns_Definition - Fatal编程技术网

C++ 瘦适配器与厚适配器(包装器)示例

C++ 瘦适配器与厚适配器(包装器)示例,c++,design-patterns,definition,C++,Design Patterns,Definition,我找不到任何关于薄适配器和厚适配器之间区别的信息。如果有人能提供一个简单的例子(请注意,这个例子不需要用C++)来描述,我将不胜感激 提前谢谢 编辑:我对这一点的看法类似于一个需要最少更改才能符合预期界面的程序 这很简单 例如,假设您希望在代码中使用,但希望能够对代码进行单元测试,甚至在运行时更改要使用的函数。然后添加一个基类: struct FunctionApiBase { virtual ~FunctionApiBase{} virtual int stat(const char *

我找不到任何关于薄适配器和厚适配器之间区别的信息。如果有人能提供一个简单的例子(请注意,这个例子不需要用C++)来描述,我将不胜感激

提前谢谢

编辑:我对这一点的看法类似于一个需要最少更改才能符合预期界面的程序

这很简单

例如,假设您希望在代码中使用,但希望能够对代码进行单元测试,甚至在运行时更改要使用的函数。然后添加一个基类:

struct FunctionApiBase
{
 virtual ~FunctionApiBase{}

 virtual int stat(const char *path, struct stat *buf) = 0;
};
实施它:

struct RealFunctionApi : public FunctionApiBase
{
  virtual int stat(const char *path, struct stat *buf)
  {
    ::stat( path, buf );
  }
};
然后创建realfunctionpi类型的对象并对其调用stat,而不是实函数


如果我理解你链接中的文字,厚适配器只有更复杂的代码。

我从来没有听说过薄适配器和厚适配器。你从哪里弄来的?据我所知,只有适配器模式存在。实际上,我收到一个为某个类创建适配器模式的请求。顺便说一句,这是我到目前为止发现的唯一信息:你能推荐关于厚包装和薄包装的进一步阅读吗?谢谢lot@kburlz不是真的。我建议的是一种标准的依赖注入方法。在这个问题下有一个联系