◎筱米加步枪◎.Blog

Happy coding

适配器模式

筱米加步枪 posted @ 2010年3月23日 10:03 in [ 设计模式 ] with tags 设计模式 适配器模式 , 1663 阅读

适配器模式:顾名思义,就是由一个中间介质,实现一种接口到另外一种接口的转化。两种接口都不用改变其中任何一个接口的结构。

适配器模式成为【类适配器】和【对象适配器】,这里用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~又学习了一个新模式


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter