- 1、本文档共69页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入浅出的设计模式之适配器模式
The Adapter Pattern(结构模式之适配器模式) 本章主要内容 现实生活中的适配器 面向对象的适配器 适配器的例子 适配器模式解析 适配器模式概念 对象适配器和类适配器 Java的迭代器 装饰者和适配器模式 现实生活中的适配器 电压适配 当把美国的电器拿回中国大陆去用的时候, 就面临电压不同的问题。美国的生活用电压是110伏,而中国的电压是220伏。怎么办? 如果要在中国大陆使用在美国使用的电器, 就必须有一个能把220伏电压转换成110伏电压的变压器。 现实生活中的适配器 请大家举例 鼠标的串口和usb口之间的转化 面向对象软件系统的适配问题 假设我们已经有一个软件系统,原来使用了一个第三方类库A。现在有一个新的第三方类库B,其功能等各方面都更加强大。我们希望用B来替换A,以改善我们的系统。但是B的接口与A不一样。那则么办呢? 办法之一 办法之一 办法之二 第二种方案的优点 办法之三 适配器的例子 简化的鸭子接口和类 public interface Duck { public void quack(); public void fly(); } MallardDuck类 public class MallardDuck implements Duck { public void quack() { System.out.println(嘎嘎嘎...); } public void fly() { System.out.println(我在飞哦!); } } 现在有一种新家伙 public interface Turkey { public void gobble(); public void fly(); } WildTurkey public class WildTurkey implements Turkey { public void gobble() { System.out.println(咕咕咕...); } public void fly() { System.out.println(我在飞,不过飞不远。); } } 我们原来有一个程序使用鸭子对象,现在想让它使用火鸡对象,但是火鸡与鸭子的接口不同,不能直接使用。 写一个火鸡适配器,让火鸡看起来像鸭子 火鸡适配器 public class TurkeyAdapter implements Duck { Turkey turkey; public TurkeyAdapter(Turkey turkey) { this.turkey = turkey; } public void quack() { turkey.gobble(); } public void fly() { for(int i=0; i 5; i++) { turkey.fly(); } } } 使用适配器 public class DuckTestDrive { public static void main(String[] args) { MallardDuck duck = new MallardDuck(); WildTurkey turkey = new WildTurkey(); Duck turkeyAdapter = new TurkeyAdapter(turkey); System.out.println(火鸡说...); turkey.gobble(); turkey.fly(); System.out.println(\n鸭子说...); testDuck(duck); System.out.println(\n火鸡适配器说...); testDuck(turkeyAdapter); } static void testDuck(Duck duck) { duck.quack(); duck.fly(); } } 适配器模式详解 适配器涉及的几个概念 客户(client):使用适配器的用户 目标接口(target inter):客户和适配器之间交互的接口 适配器(adapter):客户和源之间的中介 被适配者接口(adaptee inter):适配器和被适配者(源)之间的接口。 被适配者(源)adaptee: 试试看 现在,如果希望把鸭子包装成火鸡该怎么做? 写出你的代码DuckAdapter DuckAdapter参考答案 import java.util.Random; public class DuckAdapter implements Turkey { Duck duck; Random rand;
文档评论(0)