`

适配器模式

阅读更多

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

 

m git : https://github.com/hejiawang

 

1、适配器模式就是将一个类的接口变成客户端所期待的另一种接口,使客户端能够使用原来因为接口不匹配所导致不能用的接口。

        好像变压器,像我们的手机电脑,不能直接使用220V的电压,那么通过变压器就能降低电压,使原        来不能使用的电压现在变得能够使用。这个变压器就是一个适配。

       下图中,原本A和C是不能够在一起,通过B的适配,AC终成眷属了。。。。



 2、下面看看适配器模式的代码:

需要适配的角色,就像上面图中的A。。

package com.wang.adapterPattern;

/**
 * 适配器模式 </br> 目标角色
 * 
 * @author wang
 * 
 */
public interface Target {

	/**
	 * 目标角色自己的方法
	 */
	public void request();
}

 它的实现类

package com.wang.adapterPattern;

/**
 * 目标角色实现类
 * 
 * @author wang
 * 
 */
public class ConcreteTarget implements Target {

	@Override
	public void request() {

		System.out.println("ConcreteTarget");
	}

}

 适配的原角色,就像上图中的C。。

package com.wang.adapterPattern;

/**
 * 适配的源角色
 * 
 * @author wang
 * 
 */
public class Adaptee {

	/**
	 * 源角色的方法
	 */
	public void doSomething() {
		System.out.println("Adaptee");
	}
}

 适配器角色,也就是上图中的B了。。

package com.wang.adapterPattern;

/**
 * 适配器角色
 * 
 * @author wang
 * 
 */
public class Adapter extends Adaptee implements Target {

	@Override
	public void request() {
		super.doSomething();
	}
}

 

客户端使用情况:

package com.wang.adapterPattern;

public class APP {

	public static void main(String[] args) {

		Target target = new ConcreteTarget();
		target.request();

		/**
		 * 适配其他的角色
		 */
		Target targetAdapter = new Adapter();
		targetAdapter.request();
	}
}

 

3、适配器的使用情况很好判断,比如,系统扩展了,需要使用一个已经或新建的类,但是这个类又不符合系统的接口,咋办呢。。。。适配呗。。。中间添加个适配器,搞定。。。。。

  • 大小: 2.3 KB
1
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics