Adapter

来源:互联网 发布:刷粉丝的软件 编辑:程序博客网 时间:2024/06/08 03:20

适配器模式相对来说还是比较简单的,不管是原理上的理解还是代码上的实现。其主要功能是:将一个接口转化为用户期待的另外一个接口适配器让原本不兼容的类可以合作无间。

下面我用一个实例来告诉大家 适配器是如何工作的。

在森林中有一个自动化游乐园,在游乐园里的某个地方每天专为人类提供桃子,为了不让除了人类之外的其他动物来吃桃子比如猴子,游乐园在最初设计的时候设置了一个测试环节,测试环节包括两个项目。因为这个森林中只有人类的身高能达到1.5米,也只有人类跳远的距离能达到5米,所以这两个项目的程序是这样设计的。如果测试者的身高大于1.5米并且跳远超过5米就认定是人类能吃到桃子。但是没过多久,就有聪明的猴子吃到了桃子。这是怎么回事呢?让我们一起去看一下。


好了下面我们通过代码来实现以下这个游戏。

1 先新建一个人类的接口以及人类接口的实现类

public interface IPeople {/** * 跳远 */double  jump();/** * 量取身高 */double getHeight();}public class People implements IPeople{private double height;public People(double height){this.height = height;}/** * 返回人的身高 * @return */@Overridepublic double getHeight() {return height;}/** * 人跳远能跳5米 */@Overridepublic double jump() {return 5.0;}}

2 新建一个猴子的接口以及一个猴子接口的实现类

public interface IMonkey {/** * 跳远 */double  jump();/** * 量取身高 */double getHeight();}public class Monkey implements IMonkey{private double height;public Monkey(double height){this.height = height;}/** * 返回猴子的身高 * @return */@Overridepublic double getHeight() {return height;}/** * 猴子跳远能跳2米 */@Overridepublic double jump() {return 2.0;}}

3 这个类比较有趣是那些聪明猴子想出来的 新建一个 猴子适配器类 (实现人类接口) 这个类就是 适配器模式的精华


public class MonkeyAdapter implements IPeople{//为了假装成人类 猴子适配器必须实现人类行为的接口private Monkey monkey;public MonkeyAdapter(Monkey monkey){this.monkey = monkey;}/** * 为了通过跳远测试猴子跳的时候连续跳了3次 */@Overridepublic double jump() {return monkey.jump()*3;}/** * 为了通过身高测试猴子穿了0.6米的鞋子 */public double getHeight() {return monkey.getHeight()+0.6;}}

4 新建一个游戏模拟类

public class Test {public static void main(String[] args){System.out.println("**************猴子开始测试**********");//定义一个身高只有1米的猴子Monkey monkey = new Monkey(1.0);if(test(monkey.getHeight(),monkey.jump())){System.out.println("猴子吃到了桃子");}System.out.println("**************人开始测试**********");//定义一个身高只有1.6米的人People people = new People(1.6);if(test(people.getHeight(),people.jump())){System.out.println("人吃到了桃子");}System.out.println("**************伪装成人的猴子开始测试**********");//定义一个身高只有1米的猴子Monkey monkey2 = new Monkey(1.0);IPeople smartmonkey = new MonkeyAdapter(monkey2);if(test(smartmonkey.getHeight(),smartmonkey.jump())){System.out.println("聪明的猴子吃到了桃子");}}static boolean test(double height,double jumpDistance){if(height < 1.5){System.out.println("身高不够1.5米,测试不通过");return false;}if(jumpDistance < 5){System.out.println("跳远距离不够5米,测试不通过");return false;}System.out.println("测试通过");return true;}}

输出结果:

**************猴子开始测试**********
身高不够1.5米,测试不通过
**************人开始测试**********
测试通过
人吃到了桃子
**************聪明的猴子开始测试**********
测试通过
聪明的猴子吃到了桃子


好了,你可以多理解下 3 中粘贴的代码,那就是适配器模式的精华。








原创粉丝点击