Facade与Adapter模式应用

前言

作为设计模式第一篇随笔,首先以个人粗浅了解谈一谈何为设计模式。

 

简单来说,对于某一类新问题,可以使用前人为旧问题设计过的解决方案。将前人设计的模式应用到新问题上,不仅避免了许多可能碰壁的尝试,同时也是站在了巨人的肩膀之上。设计模式广泛应用于建筑学、工程学等学科;对于软件工程,设计模式也不例外。

软件中最困难的部分当属需求的变化。"需求发生了变化——它和死亡、纳税都是不可避免的三件事"——《设计模式解析》(Shalloway,Trott) 。设计模式的精髓在于关注于发现变化并封装变化,以便将变化限制在几个特定的类之中,修改一个类并不会影响到另一个类的正常工作。每个类担当起自己应有的责任,分工明确;只有在必要的时候才在类之间通信。

事实上设计模式非常适合使用类比的方法来说明。它本来就不是从代码本身孕育出来的。过分关注于代码的结果是导致混乱而不可读。设计模式是在失败中总结教训,可谓是由无数的尸体堆叠而成的丰碑。当然,假若我们掌握了设计模式的基本思路,不用走弯路,我们甚至可以自己推导出其中的一些内容。

 

设计模式初接触

为了提高代码的重用性与使用代码的效率,Facade(外观)(发音:佛萨德)与 Adapter(控制器) 模式应运而生。

1. Facade模式

问题背景:操作一台复杂的机器,没有一个初接触的人愿意了解机器每一个按钮的功能。假如我们只想完成“开机”,“运行1分钟”,“关机”的操作,应该如何在不了解机器细节的前提下完成操作呢?

创建一个类,内部提供“开机”“运行1分钟”“关机”三个方法,每个方法内对机器的操作进行具体的定义。

在MachineFacade内创建“开机”、“操作”、“关机方法”,将按钮、参数封装起来使用户不可见。用户不必深入到实现细节,极大提升了调用的效率。

 

2. Adapter模式

问题背景:三头的插头插不进双孔的插座

解决办法:使用转接插头

道理如此。在程序中,往往造成问题的是使用者调用一个抽象方法 "双头插头()"方法 获取电能。提供者没有按照同一个接口开发,反而提供了一个实体方法“三头插头()”。为了防止重写整个三头插头方法,引入一个“转换插头”类,提供“双头插头”方法,内部实现通过一定的操作,能够正确调用“三头插头”方法,实现了适配。

MyAdapter内聚合HisClass或者创建关联,在MyAdapter中调用HisClass方法。再通过类继承,使MyProject与HisClass通信。尽管HisClass内变量名或实现方式与MyClass不同,通过适配,使得“My”部分能够使用“His”部分。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值