六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 44|回复: 0

学习设计模式之适配器模式

[复制链接]

升级  35.33%

27

主题

27

主题

27

主题

秀才

Rank: 2

积分
103
 楼主| 发表于 2013-2-3 14:36:00 | 显示全部楼层 |阅读模式
首先声明一个鸟类的接口,鸟会飞,还会唱歌
package com.adapter;public interface Bird {public void sing();public void fly();}
创建老鹰类,实现鸟类接口
package com.adapter;public class Eagle implements Bird {public void fly() {System.out.println("I am an eagle, I can fly high");}public void sing() {System.out.println("I can sing loud");}}
创建家禽接口,家禽也能飞,叫
package com.adapter;public interface JiaQin {public void fly();public void jiao();}
创建家禽实现类鸭子,鸭子飞得不高,只会嘎嘎叫
package com.adapter;public class Duck implements JiaQin {public void fly() {System.out.println("I can fly a little");}public void jiao() {System.out.println("I can quack");}}
现在领导要来观察老鹰,但是现在没有老鹰,好吧,那就抓一只鸭子来冒充吧,披上老鹰皮的鸭子
package com.adapter;public class BirdTest {public static void main(String[] args){JiaQin duck = new Duck();        //假的老鹰,去冒充鸟类,使之也可以被观察Adapter phonyEagle = new Adapter(duck);observerTheBird(phonyEagle);}//观察鸟类方法public static void observerTheBird(Bird b){b.fly();b.sing();}}
让鸭子能披上老鹰皮的,就是那个适配器Adapter,里面真的包了一只鸭子,会装的鸭子
package com.adapter;public class Adapter implements Bird {private JiaQin duck;Adapter(JiaQin duck){this.duck = duck;}public void fly() {duck.fly();}public void sing() {duck.jiao();}}
运行结果如下:
I can fly a littleI can quack

总结:适配器模式的用处在于装,将类从一个接口,转换到另外一个接口,使原来不一样的类,至少可以看起来是一样的
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表