设计模式:Adapter模式

目的:复用代码和兼容以前的代码

思想:提供一个中间层,做兼容

方法:“继承”的方式,“委托”的方式

继承关系图:

  • 委托方式

  • 继承方式


例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//原来的打印
class Print  
{
public:
    void PrintText(string str)
    {
        cout<< str ;
    }
};
 
//新要求,打印加括号
class NewPrint     
{
public:
    virtual void PrintText(string str) = 0;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//适配层:委托方式
class Adapter: public NewPrint 
{
    Print print;   //委托方式
public:
    Adapter(Print print)
    {
        this->print = print;
    }
     
    void PrintText(string str)
    {
        cout<< "( ";
        print.PrintText(str);
        cout<< " )" << endl;;
    }
};
1
2
3
4
5
6
7
int main()
{
    Print p;
    NewPrint* np = new Adapter(p);
    np->PrintText("niu bi le!");
    return 0;
}

 

1
2
3
4
5
6
7
8
9
10
11
//适配层:继承的方式
class Adapter: public Print, public NewPrint  //继承方式
{
public:
    void NewPrintText(string str)
    {
        cout<< "( ";
        PrintText(str);
        cout<< " )" << endl;;
    }
};
1
2
3
4
5
6
int main()
{
    NewPrint* np = new Adapter;
    np->NewPrintText("niu bi le!");
    return 0;
}

 

posted @   Yong_无止境  阅读(275)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示