调侃《Head first设计模式》之适配器模式

     你需要在欧洲使用美国制造的笔记本,但是插口和电压的不1导致得你需要1个叫做适配器的东西,如图:

  


    通过适配器,我们就能够将本来不可以调和合作的两种事物联系在1起了。

   那面向对象的适配器又是甚么呢?其实,OO适配器和真实世界的适配器扮演着相同的角色:将1个接口转换为另外一个接口,以符适用户的期望。

   可以简单地用下图理解适配器:

   

   

   现在我们来1个有趣的例子开始进入代码讲授:

   首先鸭子的接口是这样的:

   


   绿头鸭的类:

   

   而火鸡的接口是这样的的:

   

   有这样1种火鸡:

   

   有1只火鸡想冒充鸭子,但是它不会quack,只会gobble,咋办呢?

   写个适配器类吧,正如将美国插头冒充为欧洲的那样~~

   

   适配器要实现Duck接口,就像插头适配器本身也是1个插头,重点在于,在调用本来属于鸭子的方法的时候实质上调用了火鸡的方法!

   客户端测试1下:

   

   testDuck方法只认鸭子,但是它没想到1只冒充鸭子的火鸡混入其中,也装腔作势地像鸭子1样叫和飞。


   让我们结合两个例子来解析适配器模式。testDuck方法类似欧洲的插座,它只认欧洲的插头,适配器固然就是我们的火鸡鸭子适配器类了,美国插头就像火鸡,通过适配器,将美国插头假装成欧洲插头。

  

   看看官方的定义:

   适配器模式将1个类的接口,转换成客户期望的另外一个类的接口。适配器让本来接口不兼容的类可以合作无间。

   看看类图:

   

    客户只看到目标接口,正如testDuck方法只看到Duck,而欧洲插座只看到欧洲的插头1样,适配器就是把被适配者转换为目标接口的样子。

   适配器模式充满着良好的OO设计原则:使用对象组合,已修改的接口包装被适配者。另外的优点是被适配者的子类,都可以搭配适配器使用。

   适配器模式在实践中的使用处合:想使用1个已存在的类,但是如果它的方法和你的要求不同时,而你又不想更改客户真个代码时,可以斟酌使用适配器。比如:公司在设计1个系统斟酌使用第3方开发组件,而这个组件的接口和我们自己的系统接口不同,而我们也没必要为了逢迎它而改变自己的接口,就能够斟酌使用适配器模式来解决问题。

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » 调侃《Head first设计模式》之适配器模式

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡