标签:不能 http end override 扩展 test 函数 对象 interface
适配器主要功能就是一个小范围的转换工作,比如usb接口的笔记本需要连接针孔的键盘,那么就需要一个中间的转换器,把usb和针孔对接起来,中间这个对接的小部件就是适配器
适配器模式有两种实现方式:
1、直接转换类继承目标类,这种方式有类继承唯一限制的局限性,不利于扩展
/** *目标连接对象,针孔键盘 */ public class KeyBoard { public void ZhenKong() { System.out.println("键盘针孔"); } } // ========================================== /** * 适配器接口:usb连键盘上的针孔 */ public interface Target { //目标作用就是转换Usb成针孔连接 public void tranferUsbToZhenKong(); } //============================================== /** * 适配器实现类:具体实现了Usb到针孔转换,与目标对象针孔键盘关联起来了,可以通过继承的方式关联,也可以通过注入的方式关联 * 本例采用继承方式 */ public class Adapter extends KeyBoard implements Target { @Override public void tranferUsbToZhenKong() { ZhenKong(); //当直接继承目标对象后,就具有了目标对象的方法,可以直接调用 } } //============================================== /** * 笔记本不能直接连针孔键盘,得通过中间转换器连接,模拟实际开发中第三方接口的限制,无法直接调用只能先转换再调用 */ public void Usb(Target target) { target.tranferUsbToZhenKong(); System.out.println("笔记本Usb端口连适配器转换口"); } // ================================ // 测试 @Test public void func() { Computer computer=new Computer(); Target target=new Adapter(); computer.Usb(target); }
2、适配器采用注入目标对象的方式
/** *目标连接对象,针孔键盘 */ public class KeyBoard { public void ZhenKong() { System.out.println("键盘针孔"); } } //===================================== /** * 适配器接口:usb连键盘上的针孔 */ public interface Target { //目标作用就是转换Usb成针孔连接 public void tranferUsbToZhenKong(); } /** * 适配器实现类:具体实现了Usb到针孔转换,与目标对象针孔键盘关联起来了,可以通过继承的方式关联,也可以通过注入的方式关联 * 本例采用注入目标对象方式 */ public class Adapter implements Target { private KeyBoard keyBoard; public Adapter(KeyBoard keyBoard) { this.keyBoard=keyBoard; //通过构造函数注入 } @Override public void tranferUsbToZhenKong() { keyBoard.ZhenKong(); //通过适配器来调用目标对象的方法 } } //================================== /** * 笔记本不能直接连针孔键盘,得通过中间转换器连接,模拟实际开发中第三方接口的限制,无法直接调用只能先转换再调用 */ public void Usb(Target target) { target.tranferUsbToZhenKong(); System.out.println("笔记本Usb端口连适配器转换口"); } //===================================== @Test public void func() { Computer computer=new Computer(); KeyBoard keyBoard=new KeyBoard(); Target target=new Adapter(keyBoard); computer.Usb(target); }
标签:不能 http end override 扩展 test 函数 对象 interface
原文地址:http://www.cnblogs.com/javabg/p/7620037.html