橋接(Bridge)是用於把抽象化與實現化解耦,使得兩者能夠獨立變化。這種類型的設計模式屬於結構型模式,它經過提供抽象化和實現化之間的橋接結構,來實現兩者的解耦。html
使用場景: 一、若是一個系統須要在構件的抽象化角色和具體化角色之間增長更多的靈活性,避免在兩個層次之間創建靜態的繼承聯繫,經過橋接模式能夠使它們在抽象層創建一個關聯關係。 二、對於那些不但願使用繼承或由於多層次繼承致使系統類的個數急劇增長的系統,橋接模式尤其適用。 三、一個類存在兩個獨立變化的維度,且這兩個維度都須要進行擴展。設計模式
咱們有一個做爲橋接實現的 DrawAPI
接口和實現了 DrawAPI
接口的實體類 RedCircle
、GreenCircle
。Shape
是一個抽象類,將使用 DrawAPI
的對象。BridgePatternDemo
類使用 Shape
類來畫出不一樣顏色的圓。spa
橋接模式代碼案例設計
適配器模式(Adapter Pattern)是做爲兩個不兼容的接口之間的橋樑。這種類型的設計模式屬於結構型模式,它結合了兩個獨立接口的功能。code
應用實例: 一、美國電器 110V,中國 220V,就要有一個適配器將 110V 轉化爲 220V。 二、JAVA JDK 1.1 提供了 Enumeration 接口,而在 1.2 中提供了 Iterator 接口,想要使用 1.2 的 JDK,則要將之前系統的 Enumeration 接口轉化爲 Iterator 接口,這時就須要適配器模式。 三、在 LINUX 上運行 WINDOWS 程序。 四、JAVA 中的 jdbc。htm
咱們有一個 MediaPlayer 接口和一個實現了 MediaPlayer 接口的實體類 AudioPlayer。默認狀況下,AudioPlayer 能夠播放 mp3 格式的音頻文件。對象
咱們還有另外一個接口 AdvancedMediaPlayer 和實現了 AdvancedMediaPlayer 接口的實體類。該類能夠播放 vlc 和 mp4 格式的文件。blog
咱們想要讓 AudioPlayer 播放其餘格式的音頻文件。爲了實現這個功能,咱們須要建立一個實現了 MediaPlayer 接口的適配器類 MediaAdapter,並使用 AdvancedMediaPlayer 對象來播放所需的格式。繼承
AudioPlayer 使用適配器類 MediaAdapter 傳遞所需的音頻類型,不須要知道能播放所需格式音頻的實際類。AdapterPatternDemo 類使用 AudioPlayer 類來播放各類格式。接口
代碼案例:
適配器模式