GoF設計模式-適配器模式

    適配器模式(重要):
        又叫包裝器,將一個接口轉換成另一個用戶希望的接口,使得原本不兼容的兩個類可以協同工作。既可以作爲類結構型模式,又可以作爲對象結構型模式。由目標抽象類、適配器類、適配者類、客戶類組成,客戶類針對目標抽閒類編程,適配器模式更多的是強調對代碼的組織,而不是功能的實現。
    類適配器模式:適配器類與適配者類是繼承關係,適配器類繼承適配者類,實現目標抽象接口
    對象適配器模式:適配器類與適配者類是關聯關係,適配器類關聯適配者類,繼承目標抽象類
    
    適配器的適用場景:
        1.系統要使用現有的類,而這些類的接口不符合系統的需要
        2.建立一個可重複使用的類,將這個類與那些不太兼容的類一起工作
    
    適配器的優點:
        1.將目標抽象類與適配者類解耦,使用適配器類來重用現有的適配者類,無須修改原有代碼
        2.將具體的實現封裝到適配者類中,增加了類的透明性和複用性,具有良好的靈活性和可擴展性。新增適配器類不需要修改原有代碼,符合開閉原則
        3.類適配器模式中,適配器類可以覆蓋適配者類的一些方法,具有很強的靈活性。對象適配器可以適配多個適配者類。
        
    適配器的缺點:
        1.類適配器模式的缺點是不能適配多個適配者類和目標類必須爲接口(因爲不支持多繼承),對象適配器模式的缺點是不能夠重寫適配者類的方法
    
    適配器的應用:
        1.JDBC驅動是介於JDBC接口和數據庫引擎接口之間的適配器軟件
        2.Spring AOP中的BeforeAdvice、AfterAdvice和ThrowsAdvice三種通知類型藉助適配器模式來實現,允許用戶向框架中加入任何一種自己想要支持的通知類型。
        
    默認適配器模式:當不需要全部實現接口中的所有方法時,可先設計一個抽象類實現該接口,併爲接口中的每個方法提供一個默認實現(空方法),這樣該抽象類的子類就可以選擇地覆蓋父類的某些方法來實現需求,適用於一個類不想使用實現的接口中所有方法的情景,也稱爲單接口適配器模式。
    適配者接口:要適配的對象,是一個接口
    默認適配器類:是一個實現了適配者接口的抽象類
    具體業務類:是默認適配器的子類,有選擇地覆蓋默認適配器類中的方法

適配器模式的例子(類適配器):模擬數據庫引擎和JDBC接口

適配者類(數據庫引擎)

public class SqlConnection {
	
	public void sqlStart() {
		System.out.println("數據庫初始化。。。");
	}
	
	public void sqlClose() {
		System.out.println("數據庫關閉。。。");
	}
}

目標抽象接口(JDBC接口)

public interface ConnectDB {
	public void start();
	public void close();
}

適配器類(mysql JDBC驅動)

public class MysqlAdapter extends SqlConnection implements ConnectDB{

	 /**
	 * @Description: TODO
	 * @author doudou
	 * @date 2019年10月9日
	 * @throws
	 * @return
	 * @see structural.AdapterPattern.ConnectDB#start()
	*/
	@Override
	public void start() {
		sqlStart();
	}

	 /**
	 * @Description: TODO
	 * @author doudou
	 * @date 2019年10月9日
	 * @throws
	 * @return
	 * @see structural.AdapterPattern.ConnectDB#close()
	*/
	@Override
	public void close() {
		sqlClose();
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章