设计形式之Adapter(适配器模式)
设计模式之Adapter(适配器模式)
所谓适配器模式就是将一个类的接口,转换成客户期望啊的另一个接口,使原本不兼容的类可合作无间。
例如这样的一个场景:在一个Amd的主板上原本只能插着Amd的CPU。
用代码表示就是这样的:
这样我在使用的时候AMD的主板只能插上AMD的CPU。
而这个时候我有一块Intel的CPU。
这个时候我想在我AMD的主板上插上Intel的CPU则就插不上。
如果想在AMD的主板上可以插上Intel的CPU我们则需要一个适配器。
这个时候我有一款I7的Intel的CPU,则就可以插在AMD的主板上工作了
所谓适配器模式就是将一个类的接口,转换成客户期望啊的另一个接口,使原本不兼容的类可合作无间。
例如这样的一个场景:在一个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(); } }