设计模式-适配器模式

来源:《设计模式之禅》

定义:将一个类的接口 变换成客户端期望的另一个接口,从而使原本不匹配而无法一起工作的两个类能在一起工作。

适配器三个角色:

  1. Target 目标角色:定义把其他类接口转换为何种接口,即期望的接口。

  2. Adaptee源角色:将已经存在的、运行良好的的类或对象,经适配器包装,转换为目标角色。

  3. Adapter适配器角色:把源角色转换为目标角色。

类图:

设计模式-适配器模式_第1张图片

代码:

抽象目标角色

/**
 * 
 */
package cc.rico.pattern.adapter;

/**
 * @author rico
 * 抽象目标角色
 */
public interface Target {
	/**
	 * 目标角色方法
	 */
	public void option();
}

具体目标角色

/**
 * 
 */
package cc.rico.pattern.adapter;

/**
 * @author rico
 * 具体目标角色
 */
public class ConcreteTarget implements Target {

	@Override
	public void option() {
		System.out.println("####ConcreteTarget.option...");
	}
}

源适配角色

/**
 * 
 */
package cc.rico.pattern.adapter;

/**
 * @author rico 
 * 源适配角色
 */
public class Adaptee {
	public void action() {
		System.out.println("###Adaptee.action...");
	}
}

适配器角色

/**
 * 
 */
package cc.rico.pattern.adapter;

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

	/* (non-Javadoc)
	 * @see cc.rico.pattern.adapter.Target#option()
	 */
	@Override
	public void option() {
		super.action();
	}

}

场景类

/**
 * 
 */
package cc.rico.pattern.adapter;

/**
 * @author rico
 * 场景类
 */
public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 源操作
		Target target = new ConcreteTarget();
		target.option();
		
		
		// 适配器后操作
		target = new Adapter();
		target.option();
	}
}


适配器模式优点:

  1. 可以使两个没有关系的类在一起运行。

  2. 增加类间的透明度。

  3. 提高类复用性。

  4. 灵活性非常好。

适配器模式缺点:

     修改一个已经投产的接口。

使用场景:

扩展:


你可能感兴趣的:(设计模式-适配器模式)