java設計模式5——適配器模式

java設計模式5——適配器模式

一、結構型模式介紹

1.一、做用

從程序的結構上實現鬆耦合,從而能夠擴大總體的類結構,用來解決更大的問題。

分類:

  • 適配器模式
  • 代理模式
  • 橋接模式
  • 裝飾模式
  • 組合模式
  • 外觀模式
  • 享元模式java

    二、適配器模式介紹

    適配器模式(Adapter Pattern)是做爲兩個不兼容的接口之間的橋樑。這種類型的設計模式屬於結構型模式,它結合了兩個獨立接口的功能。設計模式

這種模式涉及到一個單一的類,該類負責加入獨立的或不兼容的接口功能。舉個真實的例子,讀卡器是做爲內存卡和筆記本之間的適配器。您將內存卡插入讀卡器,再將讀卡器插入筆記本,這樣就能夠經過筆記原本讀取內存卡。ide

本節舉例:(網線和筆記本電腦)

三、第一種建模方式:(使用繼承,網線和轉換器綁在一塊兒)又稱爲類適配器

3.一、定義要適配的類(網線)

package com.xgp.company.結構性模式.第一種_適配器模式;

/**
 * 要被適配的類(網線)
 */
public class Adaptee {
    public void request() {
        System.out.println("鏈接網線上網!");
    }
}

3.二、定義客戶端類(電腦)

package com.xgp.company.結構性模式.第一種_適配器模式;

/**
 * 客戶端類:想上網,插不上網線
 */
public class Computer {

    //咱們的電腦須要鏈接上轉接器才能上網
    public void net(NetToUsb adapter) {
        //上網的具體實現,找一個轉接頭
        adapter.handleRequest();
    }

    public static void main(String[] args) {
        //電腦,適配器,網線
        Computer computer = new Computer();
        Adapter adapter = new Adapter();
//        Adaptee adaptee = new Adaptee();

        computer.net(adapter);

    }
}

此時,該電腦沒法插入網線進行上網,所以須要適配

3.三、定義適配器的抽象實現

package com.xgp.company.結構性模式.第一種_適配器模式;

/**
 * 接口轉換器的抽像實現
 */
public interface NetToUsb {
    //做用:處理請求(網 => usb)
    public void handleRequest();

}

3.四、定義具體的網線轉換器

package com.xgp.company.結構性模式.第一種_適配器模式;
/**
 * 一、繼承方式(類適配器)
 * 二、組合(對象適配器:經常使用)
 */

/**
 * 適配器:須要鏈接usb和網線
 */
public class Adapter extends Adaptee implements NetToUsb {

    @Override
    public void handleRequest() {
        //能夠上網了
        super.request();
    }
}

此時網線經過適配器插入了電腦,實現了上網的功能了

鏈接網線上網!

四、第二種建模方式:(使用組合,網線和轉換器分離)又稱爲對象適配器

網線類和適配器的抽象類不變

4.一、適配器類的改進

package com.xgp.company.結構性模式.第二種_適配器模式;
/**
 * 一、繼承方式(類適配器)
 * 二、組合(對象適配器:經常使用)
 */

/**
 * 適配器:須要鏈接usb和網線
 */
public class Adapter implements NetToUsb {

    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void handleRequest() {
        //能夠上網了
        adaptee.request();
    }
}

4.二、電腦類的改進

package com.xgp.company.結構性模式.第二種_適配器模式;

/**
 * 客戶端類:想上網,插不上網線
 */
public class Computer {

    //咱們的電腦須要鏈接上轉接器才能上網
    public void net(NetToUsb adapter) {
        //上網的具體實現,找一個轉接頭
        adapter.handleRequest();
    }

    public static void main(String[] args) {
        //電腦,適配器,網線
        Computer computer = new Computer();
        Adaptee adaptee = new Adaptee();

        Adapter adapter = new Adapter(adaptee);


        computer.net(adapter);

    }
}

4.三、測試,電腦成功連上網線進行上網了

鏈接網線上網!
相關文章
相關標籤/搜索