深入浅出设计模式之适配器模式.pptVIP

  • 20
  • 0
  • 约8.65千字
  • 约 69页
  • 2017-06-08 发布于湖北
  • 举报
深入浅出设计模式之适配器模式

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)

1亿VIP精品文档

相关文档