1. 程式人生 > >設計模式之Adapter模式

設計模式之Adapter模式

       Adapter模式又稱為介面卡模式,顧名思義,介面卡的作用就是作為“介面卡”,將源轉換成目標,生活中最常見的“適配”是充電的操作。介面卡主要分為兩種:類介面卡物件介面卡。我們從這兩方面進行簡析:

類介面卡

類介面卡主要是運用繼承的思想,拿手機充電為例,我們手機的介面(interface)是3.7V左右,但我們國家的生活電源是220V,我們的目標是要達到3.7V,也就是手機的介面就是我們的目標,首先我們定義一個手機介面(interface)如下:

interface intePhone{

public abstract double in();

}

    接下來,我們定義生活電源(類):

public class Lifevoltage{
public double out(){
    
	return 220;

}

}

     現在還差充電最關鍵的部分-------充電器頭(變壓器),也就是我們的介面卡。我們定義如下:

public class Ada extends Lifevoltage implements intePhone{
	
	public double in() {
		return ((out()/59.46));
	}



}

    客戶端:

public class client {

	public static void main(String[] args) {
		Ada ad=new Ada();
		System.out.println(ad.in());
	}

}

    執行結果:

3.699966363942146

    我們可以發現, 在介面卡類中,我們不僅僅實現了介面還繼承呼叫了充電器頭中的方法,但是,在客戶端中,我們並不需要識別到介面卡,就跟我們生活中充電一樣,我們不關心介面卡,只關心介面是否可以充電。

物件介面卡

    還是以手機充電為例,我們對其進行簡單的實現,首先我們定義一個抽象類(相當於interface)如下:

abstract class intePhone{
 
public abstract double in();

}

接下來,我們定義生活電源(類):

public class Lifevoltage{
public double out(){
    
	return 220;

}

}

介面卡我們定義如下:

public class Ada extends intePhone {
   Lifevoltage d=new Lifevoltage();
   
	public double in() {
		return ((d.out()/59.46));
	}

客戶端:

public class client {

	public static void main(String[] args) {
		Ada ad=new Ada();
		System.out.println(ad.in());
	}

}

    我們可以發現,我們僅僅將interface改成了抽象類並且繼承改為了抽象類,為什麼要這樣做呢?因為為了能夠例項化,才可以呼叫方法。