设计模式_ADAPTER

结构型模式1:

适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。

追MM比喻:ADAPTER―在朋友聚会上碰到了一个美女Sarah,从香港来的,可我不会说粤语,她不会说普通话,只好于我的朋友kent了,他作为我和Sarah之间的Adapter,让我和Sarah可以相互交谈了(也不知道他会不会耍我)

适配器模式的使用情况:

• 你想使用一个已经存在的类,而它的接口不符合你的需求。
• 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
• (仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。


类适配器
设计模式_ADAPTER

对象适配器

设计模式_ADAPTER

类适配器代码:



  1. package com.visionsky.DesignPattern; 
  2.  
  3. interface Target { 
  4.     void Request(); 
  5.  
  6. class Adaptee { 
  7.     void SpecificRequst() { 
  8.         System.out.println("Adaptee's SpecificRequst"); 
  9.     } 
  10.  
  11. class Adapter extends Adaptee implements Target  
  12.  
  13.     @Override 
  14.     public void Request() { 
  15.          System.out.println("Adapter's Request"); 
  16.           super.SpecificRequst(); 
  17.     } 
  18.  
  19.  
  20. public class AdapterDemo { 
  21.  
  22.     /** 
  23.      * @param args 
  24.      */ 
  25.     public static void main(String[] args) { 
  26.         // TODO Auto-generated method stub 
  27.         Target t=new Adapter(); 
  28.         t.Request(); 
  29.     } 
  30.  


对象适配器:


  1. package com.visionsky.DesignPattern; 
  2.  
  3. interface Target { 
  4.     void Request(); 
  5.  
  6. class Adaptee { 
  7.     void SpecificRequst() { 
  8.         System.out.println("Adaptee's SpecificRequst"); 
  9.     } 
  10.  
  11. class Adapter  implements Target  
  12.  
  13.     private Adaptee adaptee; 
  14.     public Adapter() 
  15.     { 
  16.         this.adaptee=new Adaptee(); 
  17.     } 
  18.      
  19.     @Override 
  20.     public void Request() { 
  21.          System.out.println("Adapter's Request"); 
  22.          adaptee.SpecificRequst(); 
  23.     } 
  24.  
  25.  
  26. public class AdapterDemo { 
  27.  
  28.     /** 
  29.      * @param args 
  30.      */ 
  31.     public static void main(String[] args) { 
  32.         // TODO Auto-generated method stub 
  33.         Target t=new Adapter(); 
  34.         t.Request(); 
  35.     } 
  36.  


你可能感兴趣的:(设计模式_ADAPTER)