定義:
屬於結構型模式,其主要作用是將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。
比如你手機只有2.5mm接口(貌似就Nokia干的出來),但你只能買到3.5mm的,這時就需要買個適配器了(─.─|||
意圖宗旨:
保留現有類所提供的服務,向客戶提供接口,以滿足客戶的期望
什么時候可以使用它:
1你想使用一個已經存在的類,而它的接口不符合你的需求。沒有2.5mm
2你想創建一個可以復用的類,該類可以與其他不相關的類或不可預見的類(即那些接口可能不一定兼容的類)協同工作。
3你想使用一些已經存在的子類,但是不可能對每一個都進行子類化以匹配它們的接口。對象適配器可以適配它的父類接口——僅適用於對象Adapter。
如何實現:
1類適配器
1 public class Adapter extends Adaptee implements Target{ 2 @Override 3 public void getHeadset2() { 4 this.getHeadset3(); 5 } 6 public static void main(String args[]){ 7 Target target = new Adapter(); 8 target.getHeadset2(); 9 } 10 } 11 interface Target{ 12 void getHeadset2(); 13 } 14 class Adaptee{ 15 public void getHeadset3(){ 16 System.out.println("我是3.5mm的耳機哦"); 17 } 18 }
2對象適配器
1 public class Adapter implements Target{ 2 private Adaptee adaptee ; 3 public Adapter() { 4 super(); 5 this.adaptee = new Adaptee(); 6 } 7 @Override 8 public void getHeadset2() { 9 adaptee.getHeadset3(); 10 } 11 public static void main(String args[]){ 12 Target target = new Adapter(); 13 target.getHeadset2(); 14 } 15 } 16 interface Target{ 17 void getHeadset2(); 18 } 19 class Adaptee{ 20 public void getHeadset3(){ 21 System.out.println("我是3.5mm的耳機哦"); 22 } 23 }
對象的適配器模式的不同之處在於Adapter角色封裝了Adaptee角色,而不像類的適配器模式所采取的繼承方式。其原理基本上是相似的
3缺省適配器模式
缺省適配器模式是一種特殊的適配器模式,但這個適配器是由一個抽象類實現的,並且在抽象類中要實現目標接口中所規定的所有方法,但很多方法的實現都是空方法。而具體的子類都要繼承此抽象類。