设计模式之十 适配器模式

2014-11-23 22:38:31 · 作者: · 浏览: 4

大家好,今天让我扯扯适配器模式吧

我们先看看适配器的概念:

百度百科上的介绍 适配器就是一个接口转化器,它可以是一个独立的硬件接口设备,允许硬件或电子接口与其它硬件或电子接口相连,也可以是信息接口.

那么从这个概念我们可以看出,适配器就是一个用来转化的东西。

比如说,中国电压标准是220V。而我们的电脑电源电压一般是19V(我的电脑是是20V).很明显,220V的电压给19V的电源,如果不经过处理的话,我们的电源估计就会报废了。那么怎么做的呢?答案就是一个适配器。我们的电源适配器帮我们做了转化,使得220V的电源可以给我们19V的电脑电源用。

简单理解就是 适配器进行了信息转化

在软件开发的过程中,我们经常会用遇到这种情况。

我们通过接口来访问类提供的服务,但是往往有一些现有的类已经能够完成这个服务了,只是它的接口不一定是我们所希望的,在这种情况下,现有的接口需要转化为客户类期望的接口,这样保证了对现有类的重用。如果不进行这样的转化,客户类就不能利用现有类所提供的功能,适配器模式可以完成这样的转化。

好了,看看经典的2个适配器模式的图吧

首先是类适配器

\

接着是对象适配器

\


< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+1eLBvbj2tcSy7rHwv8nS1LTTVU1MzbzW0L+0s/bAtMHLPC9wPgo8cD7G5NbQPC9wPgo8cD5UYXJnZXQ6vs3Kx87Sw8e2qNLlusO1xL3Tv9o8L3A+CjxwPkFkYXB0ZWU6vs3Kx8/W09C1xEFQSbqvyv2jrNKyvs3Kx9Do0qrKysXktcS907/aPC9wPgo8cD5BZGFwdGVyOsrKxeTG98Dgo6yw0UFkYXB0ZWXXqru7s8lUYXJnZXQ8YnI+Cjxicj4KPC9wPgo8cD7Ex8O0ztLDx8z5uPa0+sLrsMk8L3A+CjxwPrzZyejT0NXiw7TSu7j2sbO+sKO6PC9wPgo8cD7O0sPHz9bU2tXStb3By9K7uPa/ydLUvPTH0M28xqy1xLmkvt/A4KOstvjO0sPH1q7HsNKytqjS5cHL0ru49rLZ1/fA4L3Tv9qjrMTHw7TU9cO0uLTTw8TYo7/H67+0tPrC6zwvcD4KPHA+ztLDx72ytcTKx8DgysrF5Mb3o6y21M/zysrF5Mb30rLKx8DgJiMyMDI4NDu1xKOovs3Kx9TaYWRhcHRlctbQxNrWw9K7uPZhcGF0ZWVltcTS/dPDo6yyosfSyMNhZGFwdGVyvMyz0MHLVGFyZ2V0o6zU2mFkYXB0ZXLW2NC0t723qKOpPHByZSBjbGFzcz0="brush:java;">package edu.fjnu.cs.hwb.adapter; public interface Operation { void cutImage(); }

package edu.fjnu.cs.hwb.adapter;

public class ImageOperationAdaptee
{
	public void shearImage()
	{
		System.out.println("ImageOperation's  shearImage()");
	}
}

package edu.fjnu.cs.hwb.adapter;

public class ImageOperationAdapter extends ImageOperationAdaptee implements Operation
{

	@Override
	public void cutImage()
	{
		// TODO Auto-generated method stub
		shearImage();
	}
}

package edu.fjnu.cs.hwb.adapter;

public class Client
{
	public static void main(String[] args)
	{
		Operation operation = new ImageOperationAdapter();
		operation.cutImage();
	}
}

结果:


我之前上课问了老师,为什么对象适配器中要用继承,而不能用实现.老师跟我说:“这个东西有一个数学模型,验证后是用继承更好.我之前看过这个论文”..

楼主果断弱爆了..