所谓适配器模式就是将一个类的接口,转换成客户期望啊的另一个接口,使原本不兼容的类可合作无间。
例如这样的一个场景:在一个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();
}
}