Design Pattern --- Adapter

class Adaptee
{
public:
    // Interface.
    void operator()(int a, int b, int c) { cout <<a; }
};

class Target
{
public:
    // Interface.
    virtual void operator()(int a) = 0;
};
class Adapter : public Target
{
    // data.
    Adaptee m_adaptee;

public:
    Adapter(Adaptee &adaptee) : m_adaptee(adaptee) {}
public:
    // Interface.
    virtual void operator()(int a) override { m_adaptee(a, 0, 0); }
};

int main(int argc, char *argv[])
{
    auto arr = {1, 2, 3, 4, };
    for_each(arr.begin(), arr.end(), Adapter(Adaptee()));       // 可以和标准算法工作在一起了.

    return 0;
}

 

posted @ 2013-01-22 13:47  walfud  阅读(81)  评论(0编辑  收藏  举报