乙個人,想從乙個地方到底另乙個地方,可以通過走路,開車,或者騎自行車等等。
假設之前有一條鄉間小路,之前因為路況不好,人們只能通過走路,或者騎自行車通過。於是開發者針對這條路,開發itraffic這個介面,同時實現了 walk,bike這兩個具體類,但隨著經濟的發展,這條路被修建改善,路完全可以通過車了。
本來開發者想通過ittraffic去實現了car這個例項。但發現,這個car的類之前有其他的開發者實現。而且符合自己的需求。唯一的問題是,這個itraffic 不是實現 itraffic介面,而是icar。那麼問題來了,為了car這個能被開發者直接使用,怎麼辦?而這就今天要解決的問題。
//小路未開發之前的介面
inte***ce itraffic
//走class walk implements itraffic
}//自行車
class bike implements itraffic
}
//路的通過方式
class road
}
多年之後路開發了,可以通車了。開發者發現了可復用的介面
//其他開發者開發的介面
inte***ce icar
//這個具體類,符合當前開發者對車的需求。
class car implements icar
}
讓car 能被 road 像呼叫itraffic的方式進行呼叫。
//為了讓car的呼叫能像itraffic一樣,適配car
class adaptercar implements itraffic
public function run()
}
呼叫例項
$road = new road();
$road->through(new walk());
$road->through(new bike());
$road->through(new adaptercar(new car()));
而這就是今天的主角--介面卡模式
介面卡(adapter)模式的主要作用是:使得原本由於介面不相容而不能一起工作的那些類可以一起工作
這個模式,不應該是開發初要考慮的,開發初期我們應該考慮全面,開發出滿足大部分需求的介面。
這個模式是在開發後期,發現想使用乙個已經存在的類,而它的介面不符合你的需求。
設計模式學習筆記 介面卡模式
將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以在一起工作。定義客戶端期待的介面 public class target 定義需要適配的類 public class needadapter 定義介面卡 public class adapt...
設計模式學習 介面卡模式
建立型模式學習完了,接下來學習的是結構性模式。結構型模式主要涉及到如何組合類和物件以獲得更大的結構,通常採用繼承機制來組合介面和實現。首先學習的是介面卡模式。首先是介面卡的定義 介面卡模式,將乙個類的介面轉換成客戶所希望的另外乙個介面。介面卡模式使得原來由於介面不相容而不能一起工作的類可以一起工作。...
設計模式學習 介面卡模式
介面卡在我們的生活中應用的十分廣泛,比如我們的筆記本電源,如果不用介面卡,那我們的筆記本將直接接入220v的交流電,出國的朋友肯定對三個插孔的轉換頭比較熟悉,這也是一種介面卡。顧名思義,介面卡模式 有時候也稱包裝樣式或者包裝 將乙個類的介面適配成使用者所期待的。乙個適配允許通常因為介面不相容而不能在...