适配器模式:
将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本不兼容的类可以一起工作。
类图:
角色:
-目标接口:Target 客户所期待的接口,目标可以是具体的或者抽象的类也可以是接口
-需要适配的类Adaptee:
-适配器 Adapter:通过包装一个需要适配的对象,把原接口转换成目标接口。
实例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package adapter; 2 3 public interface ITarget { 4 void handleReq(); 5 } 6 7 package adapter; 8 9 /** 10 * 被适配的类 11 * (相当于例子中的,PS/2键盘) 12 * @author Administrator 13 * 14 */ 15 public class Adaptee { 16 public void request(){ 17 System.out.println("可以完成客户请求的需要的功能!"); 18 } 19 } 20 21 package adapter; 22 23 /** 24 * 适配器 (类适配器方式) 25 * (相当于usb和ps/2的转接器) 26 * @author Administrator 27 * 28 */ 29 public class Adapter extends Adaptee implements ITarget { 30 31 @Override 32 public void handleReq() { 33 // TODO Auto-generated method stub 34 super.request(); 35 } 36 37 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package adapter; 2 3 public class Client { 4 5 public void test1(ITarget t){ 6 t.handleReq(); 7 } 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 Client client = new Client(); 11 Adaptee adaptee = new Adaptee(); 12 ITarget target = new Adapter2(adaptee); 13 client.test1(target); 14 } 15 16 }
工作中的场景:
--经常用来做旧系统改造和升级
--如果我们的系统开发之后再也不需维护,那么很多模式都是没有必要的。
--InputStreamReader(InputStream)
--OutputStreamWriter(OutputStream)