適配器模式:性能
將一個類的接口,轉換成客戶指望的另外一個接口。適配器讓本來不兼容的類能夠合做無間。ui
例子:this
//將Enumeration轉換成Iterator public class EnumerationIterator implements Iterator{ Enumeration enum; public EnumerationIterator(Enumeration enum){ this.enum = enum; } public boolean hasNext(){ return enum.hasMoreElements(); } public Object next(){ return enum.nextElement(); } public void remove(){ throw new UnsupportedOperationException(); } }
外觀模式提供了一個統一的接口,用來訪問子系統中的一羣接口。外觀定義了一個高層接口,讓子系統更容易使用設計
外觀模式之"最少知識"原則code
設計原則:對象
最少知識原則:只和你的密友談話。這個原則但願咱們在設計中,不要讓太多的類耦合在一塊兒,省得修改系統中一部分,會影響到其餘部分。若是許多類之間相互依賴,那麼這個系統就會變成一個易碎的系統,它須要花許多成本維護,也會由於太複雜而不容易被其餘人瞭解。繼承
墨忒(tui第一聲)耳法則:接口
墨忒耳法則和最少知識原則的關係:開發
兩個名詞指的是同一個原則。咱們傾向於使用最少知識原則來稱呼它是由於如下兩個緣由:(1)這個名字更加直接。(2)法則(Law)給人的感受是強制的。事實上,沒有任何原則是法律,全部原則都應該在有幫助的時候才遵照。搜友的設計都難免須要折衷(在抽象和速度之間取捨,在空間和時間之間平衡...)。雖然原則提供了方針,但在採用原則以前,必須全盤考慮全部的因素。rem
優勢:
減小了對象之間的依賴,研究顯示這會減小軟件的維護成本。
缺點:
採用這個原則也會致使更多的"包裝"類被製造出來,以處理和其餘組件的溝通,這可能會致使複雜度和開發時間的增長,並下降運行時的性能。
最少知識原則例子:
//錯誤的: public House{ WeatherStation station; //其餘的方法和構造器 public float getTemp(){ return station.getThermometer().getTemperature(); } } //正確的: public House{ WeatherStation station; //其餘的方法和構造器 public float getTemp(){ Thermometer thermometer = station.getThermometer(); return getTempHelper(thermometer); } public float getTempHelper(Thermometer thermometer){ return thermometer.getTemperature(); } }
要點: