标签:
定义:
适配器模式将一个类的接口,转换成客户期望的另一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
适配器的分类:
2.继承:采用继承的方式称为类适配器 特点:通过多重继承不兼容接口,实现对目标接口的匹配,单一的为某个类而实现适配
作用:
1. 透明:通过适配器,客户端可以调用同一个接口,因而对客户端来说是透明的。这样做更简单、直接、紧凑。
2. 重用:复用了现存的类,解决了现存类和复用环境要求不一致的问题。
3. 低耦合:将目标类和适配者类解耦,通过引入一个适配器重用现有的适配者,而无需修改原有代码(遵循开闭原则)
示例项目:有台笔记本需要三相插座充电,但有个二相电源,需要创建一个适配器进行两项转三相进行充电
代码示例
1.创建一个三相插座接口
1 /** 2 * 三相插座接口 3 * */ 4 public interface ThreePlugIf { 5 //使用三相电流充电 6 public void powerWithThree(); 7 8 }
2.创建一个二相电源类
1 public class GBTowPlug { 2 //使用二相电流供电 3 public void powerWithTow(){ 4 System.out.println("使用二相电流供电"); 5 } 6 }
3.创建一个笔记本类,使用三相插座进行充电,但电源是两相的,需要适配器进行转换
1 public class NoteBook { 2 private ThreePlugIf plug; 3 public NoteBook(ThreePlugIf plug){ 4 this.plug = plug; 5 } 6 //使用插座充电 7 public void charge(){ 8 plug.powerWithThree(); 9 10 } 11 12 }
4-1.创建一个适配器(组合)
1 /** 2 * 二相转三相的插座适配器 3 * */ 4 public class TowPlugAdapter implements ThreePlugIf { 5 private GBTowPlug plug; 6 public TowPlugAdapter(GBTowPlug plug){ 7 this.plug = plug; 8 } 9 @Override 10 public void powerWithThree() { 11 System.out.println("通过转化"); 12 plug.powerWithTow(); 13 } 14 15 }
4-2.创建一个适配器(继承)
1 /** 2 * 采用继承方式实现 3 * */ 4 public class TowPlugAdapterExtends 5 extends GBTowPlug implements ThreePlugIf { 6 7 @Override 8 public void powerWithThree() { 9 System.out.println("继承方式实现"); 10 this.powerWithTow(); 11 } 12 }
5.测试类
1 public class Test { 2 public static void main(String[] args) { 3 /**组合方式*/ 4 GBTowPlug tow = new GBTowPlug(); 5 ThreePlugIf three = new TowPlugAdapter(tow); 6 NoteBook nb = new NoteBook(three); 7 nb.charge(); 8 /**继承方式*/ 9 three = new TowPlugAdapterExtends(); 10 nb = new NoteBook(three); 11 nb.charge(); 12 } 13 }
标签:
原文地址:http://www.cnblogs.com/wwzyy/p/4961990.html