設計模式——適配器與外觀模式

《Head First設計模式》筆記整理...歡迎交流...設計模式

使用場景

假設已有一個軟件系統,你但願它能和一個新的廠商的類庫搭配使用,可是這個心廠商設計出來的接口,不一樣於舊廠商的接口。spa

解決這個問題,咱們就能夠使用適配器設計

clipboard.png

定義

將一個類的接口,轉換成客戶期待的另外一個接口。適配器讓本來接口不兼容的類能夠合做無間。

類圖

圖片描述

外觀模式定義

提供了一個統一的接口,用來訪問子系統中的一羣接口。外觀定義了一個高層接口,讓子系統更容易使用。

這裏注意一下外觀模式與適配器模式的區別:外觀模式定義的接口訪問的是子系統的一羣接口code

clipboard.png

「最少知識」原則

也叫墨忒耳法原則。只和你的密友談話

方針對象

就職何對象而言,在該對象的方法內,咱們只應該調用屬於如下範圍內的方法:接口

  • 該對象自己
  • 被當作方法參數而傳遞進來的對象
  • 此方法所建立或實例化的任何對象
  • 對象的任何組件
//沒有采用這個原則
public float getTemp() {
    Thermometer thermometer = station.getTermometer(); //這裏,咱們從氣象站取得溫度計對象,再從溫度計對象取得溫度
    return thermometer.getTemperature();
}
//採用這個原則
public float getTemo() {
    return station.getTemperature();
}

以一個汽車類示例:圖片

public class Car {
    Engine engine; //這是類的一個組件,咱們能夠調用它的方法
    //其它實例變量
    
    public Car() {}
    
    public void start(Key key) {
        Doors doors = new Doors(); //這裏建立了一個新對象,它的方法能夠被調用
        
        boolean authorized = key.turns(); //被當作參數傳遞進來的對子那個,其方法能夠被調用
        
        if(authorized) {
            engine.start(); //能夠調用對象組件的方法
            updateDashboardDisplay(); //能夠調用對象內的本地方法
            doors.lock(); //能夠地阿偶建立或實例化的對象的方法
        }
    }
}

「最少知識」原則和外觀模式的關係

clipboard.png

相關文章
相關標籤/搜索