设计模式: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; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步