适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
(将已经写好的,但是不符合需求的接口,转换成目标接口)
代码如下:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;struct MyPrint
{void operator()(int a, int b){cout << a + b << endl;}
};int main()
{vector<int>v;for (int i = 0; i < 10; i++){v.push_back(i);}for_each(v.begin(), v.end(), MyPrint());return 0;
}
测试结果:
适配器模式
代码如下:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;struct MyPrint
{void operator()(int a, int b){cout << a + b << endl;}
};//定义目标接口
class Target
{
public:virtual void operator()(int a) = 0;
};//适配器
class Adapter:public Target
{
public:Adapter(int param):param(param){}virtual void operator()(int v){print(v, param);}public:MyPrint print;int param;
};Adapter MyBind2nd(int v)
{return Adapter(v);
}int main()
{vector<int>v;for (int i = 0; i < 10; i++){v.push_back(i);}for_each(v.begin(), v.end(), MyBind2nd(10));return 0;
}
测试结果: