适配器模式

  • 该系列博文主要是介绍一些常用的设计模式。
  • 此处仅使用了Java语言来进行示例,设计模式是一种思想,不受预言限制
  • 结合一些具体的例子对适配器模式进行讲解。

适配器模式

将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

OO设计原则:

  • 面向接口编程
  • 封装变化
  • 多用组合少用继承
  • 对修改关闭,对扩展开放
public class AdapterDemo {
	
	public static void main(String[] args) {
		PowerA powerA = new PowerAImplA();
		startA(powerA);
		
		
		PowerB powerB = new PowerBImpl();
		//startA(powerB); 报错
		//由于 startA 的参数为 PowerA 类型,此时需要适配
		
		PowerAAdapter pAAdapter = new PowerAAdapter(powerB);
		startA(pAAdapter);
		
	}
	
	public static void startA(PowerA powerA){
		// ......
		powerA.insert();
		// ......
	}
	

    //与startA的内容大部分重复,故仅适用 startA() ,从而需要一个相应的适配器,使得 PowerB 能使用 startA()
	public static void startB(PowerB powerB){
		// ......
		powerB.connect();
		// ......
	}
}


//适配器Adapter核心代码
class PowerAAdapter implements PowerA{
	
	private PowerB powerB;// 要进行适配的接口
	
	public PowerAAdapter(PowerB powerB) {
		this.powerB = powerB;
	}

	@Override
	public void insert() {
		powerB.connect();
	}
	
}

/**
 * 电源A接口
 */
interface PowerA{
	public void insert();
}

class PowerAImplA implements PowerA{

	@Override
	public void insert() {
		// TODO Auto-generated method stub
		System.out.println("电源A接口插入,开始工作。");
	}
	
}

/**
 * 电源B接口
 */
interface PowerB{
	public void connect();
}

class PowerBImpl implements PowerB{
	public void connect(){
		System.out.println("电源B接口已连接。");
	}
}
image