外观模式

 1.场景

         有一天我想组装一台配置比较高的电脑,但是我是电脑小白不懂电脑配置,还想打游戏,肿么办?朋友小李就给我讲了组装电脑的流程;

      首先需要去了解cpu,然后是主板,显卡,硬盘......讲了一大推,听完之后瞬间头大了,我就问难道就没有根据我的要求给我完成组装电脑的地方吗?朋友说有啊。。直接去电子市场。其实这里的电子市场就相当于我们这次所要说的外观。有了它我们就不用直接去了解那些详细配置的问题,只管要求就行;

 

把上面的抽象到代码里面其实好比就是客户端为了完成某个功能,需要调用子系统的好几个功能才能实现,这里暂且就称作为模块A  模块B  模块C 吧,对于客户端而言就需要知道这三个模块的功能,就好比是我们的电脑组件,需要知道更详细的信息才能组装一样,非常麻烦。如果要想很简单的要求就能实现还不需要知道具体的组件信息详情,哪这里就需要用到Facade(外观模式);

抽象图如下所示:

 

示例代码:

 a模块接口

a接口实现

同理实现B和C接口

定义外观对象类:

客户端使用:

运行结果:

外观模式优缺点:

   1.松散耦合

     松散了客户端和子系统之间的耦合关系,方便子系统更好的扩展

   2.简单易用

     客户端不需要了解子系统的更多细节,只需要和外观打交道即可,方便了客户端的使用,相当于子系统提供了一站式服务;

    3.更好的划分访问层次

      隐藏了实现细节,让实现逻辑一气呵成,只把功能集中暴露即可;

缺点:过多或者不合理的facade可能让人迷惑,到底是调用facade好呢还是直接调用模块好;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值