设计模式(行为型模式-适配器模式)
适配器模式在我们实际生活中随处可见,如充电器、电脑显示器DVI 与VGA转接头等,下面以电脑cpu和主板为例来理解适配器模式
1.未使用适配器模式情形(主板 + AMD)
示例:
/** * 主板类(只支持AMD接口的CPU) **/ public class MainBoard { public void power(AMD amd) { amd.work(); } } /** * AMD的CPU **/ public class AMD { public void work() { System.out.println("amd cpu work ..."); } } /** * 测试类 */ public class Test { public static void main(String[] args) { MainBoard mb = new MainBoard(); AMD amd = new AMD(); mb.power(amd); } }
通过测试结果,我们发现,电脑可以正常工作。假如有一块主板 (只支持AMD的CPU接口) 和 一块inter i7的cpu,该如何实现?
实现思路:
- 原来的主板不能做任何修改,即不能修改MainBoard这个类;
- 要使用一个适配器,并且这个适配器上有AMD接口和Inter接口;
- 这个适配器可以插到主板上并且能工作,因此这个适配器需实现了AMD接口、并且支持Inter的CPU类型;
2.使用适配器模式情形(主板 + 适配器 + I7 )
示例:
/** * Inter CPU的接口 */ public interface Inter { public void work(); } /** * I7 CPU,实现了Inter接口 */ public class I7 implements Inter { @Override public void work() { System.out.println("inter i7 work ..."); } } /** * AMD CPU的接口 */ public interface AMD { public void work(); } /** * 适配器类,将Inter的接口转换成AMD接口。 * 1.要支持Inter接口 * 2.需要实现AMD的接口 */ public class Adapter implements AMD { private Inter inter; public Adapter(Inter inter) { this.inter = inter; } @Override public void work() { inter.work(); } } /** * 主板类(只支持AMD接口的CPU),开始工作 */ public class MainBoard { public void start(AMD amd) { amd.work(); } } /** * 测试类 (主板 + 适配器 + I7) */ public class Test { public static void main(String[] args) { MainBoard mb = new MainBoard(); Inter cpu = new I7(); Adapter adapter = new Adapter(cpu); mb.power(adapter); } }