最常用的设计模式---外观模式(C++实现)

外观模式:提供了一个统一的接口,用来访问子系统的一群接口。外观定义了一个高层接口,让子系统更容易使用。

      目地:让接口变得简单,是为了简化子系统的接口。

     外观模式也十分的简单,简而言之,就是简化你的类的接口,将一系列的复杂的过程封装到内部,对外只提供最简单的接口

     结构图:


应用示例:

     假如你想吃一顿大餐,那么我想你要,首先去买菜,然后回到家后自己做菜,最后吃完饭以后要洗碗打扫。

     这么一来你需要3个类,Shopper, Cook, Dishwasher, 分别来完成买菜,做菜,洗碗等工作,显然这非常麻烦,能不能简化这个过程?当然可以!去餐馆吃。

     餐馆这时候显然就是外观模式了,他把复杂的过程封装到内部,用户不用关心细节。

实现代码:

    Shopper 采购类

[cpp]  view plain  copy
  1. class Shopper  
  2. {  
  3. public:  
  4.     void shopForGroceries()  
  5.     {  
  6.         cout<<"买菜"<<endl;  
  7.     }  
  8.   
  9. };  

       Cook 厨师类

[cpp]  view plain  copy
  1. class Cook  
  2. {  
  3. public:  
  4.     void doCook()  
  5.     {  
  6.         cout<<"做饭"<<endl;  
  7.     }  
  8.   
  9. };  


      洗碗工类 Dishwasher

[cpp]  view plain  copy
  1. class Dishwasher  
  2. {  
  3. public:  
  4.     void washDish()  
  5.     {  
  6.         cout<<"洗碗"<<endl;  
  7.     }  
  8. };  


      餐馆类

[cpp]  view plain  copy
  1. class Restaurant  
  2. {  
  3. public:  
  4.     Restaurant()  
  5.     {  
  6.   
  7.     }  
  8.     void haveAMeal()  
  9.     {  
  10.         m_shopper.shopForGroceries();  
  11.         m_cook.doCook();  
  12.         m_washer.washDish();  
  13.     }  
  14. private:  
  15.     Shopper m_shopper;  
  16.     Cook  m_cook;  
  17.     Dishwasher m_washer;  
  18. };  

     客户端:

[cpp]  view plain  copy
  1. Restaurant rt;  
  2. rt.haveAMeal();  

       总结:外观模式的主要用途就是为子系统的复杂处理过程提供方便的调用方法,使得子系统更加容易被使用。Façade对象通常属于单实例模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值