设计形式之Adapter(适配器模式)

设计模式之Adapter(适配器模式)
所谓适配器模式就是将一个类的接口,转换成客户期望啊的另一个接口,使原本不兼容的类可合作无间。

设计形式之Adapter(适配器模式)

例如这样的一个场景:在一个Amd的主板上原本只能插着Amd的CPU。
用代码表示就是这样的:
package com.unis.adpater;

/**
 * AMD主板类
 * @author Administrator
 *
 */
public class AmdBoard {
	
	private Amd amd;
	
	public AmdBoard(Amd amd) {
		this.amd = amd;
	}
	
	public void start(){
		System.out.println("开机");
		amd.ac();
	}

}

package com.unis.adpater;

/**
 * AMD的CPU
 * @author Administrator
 *
 */
public interface Amd {
	void ac();
}


这样我在使用的时候AMD的主板只能插上AMD的CPU。

而这个时候我有一块Intel的CPU。
package com.unis.adpater;
/**
 * Intel的CPU
 * @author Administrator
 *
 */
public interface Intel {
	
	void power();

}

这个时候我想在我AMD的主板上插上Intel的CPU则就插不上。
如果想在AMD的主板上可以插上Intel的CPU我们则需要一个适配器。
package com.unis.adpater;
/**
 * 适配器
 * @author Administrator
 *
 */
public class Intel2Amd implements Amd {
	
	Intel i ;
	
	public Intel2Amd(Intel i) {
		this.i= i;
	}

	@Override
	public void ac() {
		i.power();
	}

}


这个时候我有一款I7的Intel的CPU,则就可以插在AMD的主板上工作了
package com.unis.adpater;
/**
 * I7 CPU
 * @author Administrator
 *
 */
public class I7 implements Intel {

	@Override
	public void power() {
		System.out.println("I7 CPU 工作了");
	}

}

package com.unis.adpater;

public class Test {
	
	public static void main(String[] args) {
		Intel i7 = new I7();
		Intel2Amd i2a = new Intel2Amd(i7);
		AmdBoard ab = new AmdBoard(i2a);
		//让主板工作
		ab.start();
		
	}

}