C++ 07 适配器模式

  1. 说明

    • 适配器模式

      • A伪装成B.
    • 好处

      • 将两个不想关的类关联。
      • 不需要改动,可以随意的增删。
      • 变化的隔离出来。
  2. 案例

    • 书接上回

      • 鞋贩子的卖鞋在当地有了名气,需要出席一些会议。
      • 自己懒散惯了,穿着随意,也没有穿过正装,而参加会议的着装有要求。
      • 必须西装革履加皮鞋。
    • 案例

      #include<iostream>
      #include<string>
      
      class HuiYiBiaoZhun {
      public:
       virtual std::string XingMing() = 0;
       virtual std::string XiZhuang() = 0 ;
       virtual std::string PiXie() = 0;
      };
      
      void HuiYiRuChange(HuiYiBiaoZhun* can_hui_ren) {
       std::cout << "name:" << can_hui_ren->XingMing() << ","
                 << "wear:" << can_hui_ren->XiZhuang() << ","
                 << "shoes:" << can_hui_ren->PiXie() << ","
                 << std::endl;
      }
      
      
      
      class XieFanZi {
      public:
       XieFanZi() {
         name_ = "fa wai kuang tu -- zhang san";
       }
       std::string getName() {
         return name_;
       }
      private:
       std::string name_;
      };
      
      class XieFanZiDeXiZhuang : public HuiYiBiaoZhun {
      public:
       XieFanZiDeXiZhuang(XieFanZi* xiefanzi):xiefanzi_(xiefanzi) {
      
       }
       std::string XingMing() {
         return xiefanzi_->getName();
       }
       std::string XiZhuang() {
         return "xin xi zhuang";
       }
       std::string PiXie() {
         return "xin pi xie";
       }
      private:
       XieFanZi* xiefanzi_;
      };
      
      
      int main() {
       XieFanZi xiefanzi;
       HuiYiBiaoZhun* xiefanzi_xi_zhuang_mo_shi = new XieFanZiDeXiZhuang(&xiefanzi);
       HuiYiRuChange(xiefanzi_xi_zhuang_mo_shi);
      }
      
      • 鞋贩子切换成西装模式(换了西装)就可以参加会议了。
      • 即变装秀。
  3. 总结

    • 说明

      • 变装秀。
      • 切换一种模式即可。
    • 另一种

      • 可以直接继承,可以聚合,这里采用的是聚合。
    • 补充

      • 鞋贩子可以通过变装参加各种服装要求的会议。
      • 比如西装革履参加正式会议。休闲装参加朋友聚会,cos服参加二次元等等。
      • A-B,只需要准备一套马甲即可。一个模式一套马甲。
      • 需要参加的多了,马甲就多了,就可能导致类爆炸?不过灵活性挺好的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值