适配器模式
适配器模式:顾名思义,就是由一个中间介质,实现一种接口到另外一种接口的转化。两种接口都不用改变其中任何一个接口的结构。
适配器模式成为【类适配器】和【对象适配器】,这里用java实现,因此只讨论【对象适配器】,结构看下图:
举个例子,今天插在笔记本的鼠标坏了,叫小妹去买个鼠标,可是买回来才发现,她居然买了个PS2接口的鼠标,可是我笔记本是USB接口的呀,这要怎么用啊。?
如果再买个USB的鼠标,那么这个就浪费了,很明显我是不想换鼠标。更不想把笔记本给换成台式的吧~,于是这个时候我们就想到了用转换器,即实现USB到PS2的转换,代码实现如下:
1.USB接口
/** * USB接口 * * @author ChenST * * @create 2010-3-23 */ public interface USB { /** 产品描述 */ public void describe(); }
2.PS2接口
/** * PS2接口【鼠标圆孔接口】 * * @author ChenST * * @create 2010-3-23 */ public interface PS2 { /** 产品描述 */ public void describe(); }
3.鼠标类
/** * 鼠标类,实现了PS2接口,即【圆孔的鼠标】 * * @author ChenST * * @create 2010-3-23 */ public class Mouse implements PS2 { public void describe() { System.out.println("用的是PS2接口"); } }
4.适配器(USB和PS2的转换器)
/** * 接口适配器,拥有USB接口 * * @author ChenST * * @create 2010-3-23 */ public class Adapter implements USB{ /** PS2接口 */ private PS2 ps2; public Adapter(PS2 ps2) { this.ps2=ps2; } public void describe() { ps2.describe(); } }
5.测试类
/** * 测试类 * 买了一个圆孔鼠标想要插笔记本上,却发现笔记本上没有圆孔, * 只有USB接口,这个鼠标好贵啊,再买个圆孔鼠标经济上是不可行的, * 更不能扔了笔记本而换台式的电脑把。于是想到使用USB和PS2转化器 * 将转化器插在笔记本电脑上,于是笔记本USB接口就变成了PS2接口了, * 此时鼠标就可以接入了。 * * @author ChenST * * @create 2010-3-23 */ public class Test { public static void main(String[] args) { //圆孔鼠标 PS2 mouse=new Mouse(); //适配器,把他变成鼠标要用的接口 Adapter adapter=new Adapter(mouse); //现在查看下原来是USB的接口的适配器用的是什么接口 adapter.describe(); } }
运行结果:
用的是PS2接口
从结果可以看出,适配器已经实现了从USB接口到PS2接口的转换了~~OK~又学习了一个新模式