適配器模式:按照字面理解能夠理解爲要適應要配合才能一塊兒很好的工做。this
專業定義:把一個類的API轉換成用戶指望的另外一種API,讓本來不能在一塊兒工做的類可以在一塊兒工做。若是理解起來不是很明瞭,咱們舉個簡單的例子,以下:電腦是一個類,電源插座是一個類,有時候電腦的電源插頭是3孔的,而剛好如今咱們可用的電源插座是兩孔的,如今插不進去,沒法正常使用電腦,該怎麼辦?那麼此時,咱們就想到了本節所提到的適配器模式。若是咱們有一個電源適配器,其做用就是將電腦的3孔電源轉換成2孔的電源,那麼電腦不就能夠正常的工做了嗎?對象
適配器模式有類適配器模式和對象適配器模式繼承
一 類適配器模式代碼示例(核心思想:經過繼承被適配者來創建適配器)接口
//用戶指望可以使電腦插2孔的方法,咱們用一個接口來定義class
public interface Mhope方法
{im
public void method2(){};d3
}co
//電腦類工作
public class Computer
{
//插3孔電源的方法
public void method3(){};
}
//適配器,經過繼承來創建適配器這樣就保留了電腦插3孔電源的方法,經過實現接口來知足用戶指望的方法
public class Adapter extends Computer implements Mhope
{
//public void method3(){}; 原來有的插3孔的方法
public void method2(){}; //實現了用戶指望的插2孔的方法
}
有了適配器之後,那你想一想看,咱們把電腦插在適配器上,再將適配器插在咱們的兩孔電源插座上,這樣就將電腦的插3孔電源的方法轉換用戶指望的插2孔電源的方法,這就是適配器的類適配器模式,既然是經過繼承構建適配器的,那麼優勢就是能夠在適配器中對父類插3孔的方法進行修改;
二對象適配器模式代碼示例(核心思想:經過構建被適配者的對象來使用被適配者的方法,在適配器中定義用戶指望的方法)
//電腦類
public class Computer
{
//插3孔電源的方法
public void method3(){};
}
//適配器,
public class Adapter
{
private Computer computer;
//經過構造方法,可使用插3孔的方法
public Adapter(Computer computer)
{
this.computer=computer;
}
//使用插3孔的方法
public void usemethod3()
{
computer.method3();
}
//用戶指望用到的插2孔的方法
public void hopemethod2(){
//詳細代碼
......................
}; }
}
不一樣於類的適配器模式,對象適配器模式是經過構建被適配者的對象來實現適應工做的,那麼它的優勢就能夠是將不一樣的被適配者適配到同一個目標上。3,4,5,6孔的電器插頭插到咱們的具備3,4,5,6孔的電源適配器上,而後將適配器插到2孔電源上,不就均可以正常工做了嗎???? (此處舉例,話說有4,5,6孔的插座嗎?O(∩_∩)O哈哈~)