Java適配器模式


  假如我的手機是typec類型的充電口,但是現在卻只有個傳統的MicroUSB充電線,怎么辦?很簡單,弄個轉換接頭,MicroUSB口轉化成typec的,問題解決。這就是適配器的應用。

  適配器就是個轉化適配中間接口,可以將不匹配的兩件事整合到一起,把不匹配變的匹配。

  通常,適配器有三種:類適配器、對象適配器。

    類適配器:繼承實現,靜態定義

    對象適配器:代理實現,動態組合模式

  一、類適配器

    1.1、有個傳統的Micro USB的充電線

package com.cn.adapter.classAdapter;

/**
 * 有個傳統的Micro USB的充電線
 * 
 * @author cfang
 * 2018年6月1日 下午4:13:01
 */
public interface MicroUSB {

    void isMicroUSB();
}

    1.2、手機充電口為typec

package com.cn.adapter.classAdapter;

/**
 * 手機充電口為typec
 * 
 * @author cfang
 * 2018年6月1日 下午4:14:28
 */
public interface TypeC {

    void isTypeC();
}
package com.cn.adapter.classAdapter;


public class TypeCImpl implements TypeC{

    @Override
    public void isTypeC() {
        System.out.println("typec充電口");
    }

}

    1.3、整個適配器adapter,將MicroUSB 轉化成typec

package com.cn.adapter.classAdapter;

/**
 * 用於將MicroUSB接口轉化成tytpec接口
 * 
 * @author cfang
 * 2018年6月1日 下午4:46:28
 */
public class Adapter extends TypeCImpl implements MicroUSB{

    @Override
    public void isMicroUSB() {
        isTypeC();
    }

}

    1.4、測試main方法

package com.cn.adapter.classAdapter;

public class App {

    public static void main(String[] args) {
        
        MicroUSB microUSB = new Adapter();
        microUSB.isMicroUSB();
    }
}

 

  二、對象適配器

    2.1、TypeC接口、MicroUSB接口以及實現同上

    2.3、適配器類

package com.cn.adapter.objectAdapter;

import com.cn.adapter.classAdapter.MicroUSB;
import com.cn.adapter.classAdapter.TypeC;

public class Adapter implements MicroUSB{
    
    private TypeC typeC;
    public Adapter(TypeC typeC){
        this.typeC = typeC;
    }

    @Override
    public void isMicroUSB() {
        typeC.isTypeC();
    }
    

}

    2.4、測試main方法

package com.cn.adapter.objectAdapter;

import com.cn.adapter.classAdapter.MicroUSB;
import com.cn.adapter.classAdapter.TypeC;
import com.cn.adapter.classAdapter.TypeCImpl;

public class App {

    public static void main(String[] args) {
        
        TypeC typeC = new TypeCImpl();
        MicroUSB microUSB = new Adapter(typeC);
        microUSB.isMicroUSB();
    }
}

 

  三、很多時候,還會遇到一種適配器,接口的適配器,很簡單,假如有個很大的接口,幾十個方法,但是並不是每個實現該接口的都必須得實現所有方法,此時,就可以做個抽象的中間類,實現大接口,方法實現都是空。之后開發,都繼承這個抽象類,用哪些方法,就覆寫哪些方法。相對簡單,代碼就不上了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM