Java設計模式(7)----------橋接模式
橋接模式是一種結構型的設計模式,主要是特點是將抽象部分與實現部分分離開來,從而能夠進行獨自的變化。在橋接模式中,所謂的橋,個人理解是在抽象層中,將介面聯絡到一個抽象類中,更確切的說,是依賴關係。橋接模式主要適用場景是,某個物件需要從兩個或者多個(一般是兩個)維度進行描述或者操作的時候,能夠簡潔的進行處理。
特點:抽象與實現分離。抽象層依賴,具有非常好的擴充套件性。
適用場景:當場景中某個事物需要從兩個或者多個維度進行描述或者操作。
舉一個在飯店(抽象類)吃飯(動作介面)的例子。我們可以選擇在香格里拉(具體類)吃飯,也可以在希爾頓(具體類)吃飯。兩個酒店都可以提供烤肉(吃烤肉,動作介面實現類)和沙拉(吃沙拉,動作介面實現類)。我們的操作或者描述的問題,就是在什麼酒店吃什麼的問題。很顯然,這是一個2維度的選擇組合的動作,那麼就可以透過橋接模式的思路來進行實現。
對應的UML類圖如下:
1)吃飯介面
public interface EatFood
{
String eat();
}
2)吃飯實現類
public class EatMeat implements EatFood
{
@Override
public String eat()
{
return "烤肉";
}
}
public class EatSalad implements EatFood
{
@Override
public String eat()
{
return "沙拉";
}
}
3)餐廳抽象類
public abstract class Restaurant
{
protected EatFood eatFood;
public Restaurant(EatFood eatFood)
{
this.eatFood = eatFood;
}
public abstract String action();
}
4)餐廳實體類
public class ShangriLa extends Restaurant
{
public ShangriLa(EatFood eatFood)
{
super(eatFood);
}
@Override
public String action()
{
return "在香格里拉酒店吃" + eatFood.eat();
}
}
public class Healton extends Restaurant
{
public Healton(EatFood eatFood)
{
super(eatFood);
}
@Override
public String action()
{
return "在希爾頓酒店吃" + eatFood.eat();
}
}
5)驗證程式
/**
* 驗證
*/
public class Demo
{
public static void main(String[] args)
{
Restaurant restaurant = new ShangriLa(new EatMeat());
System.out.println(restaurant.action());
Restaurant restaurant1 = new Healton(new EatSalad());
System.out.println(restaurant1.action());
}
}
6)執行結果
在香格里拉酒店吃烤肉
在希爾頓酒店吃沙拉Process finished with exit code 0
上文講到,橋接模式的適用場景是需要從兩個或者多個維度去描述或者操作事物。而抽象工廠模式也與“多個維度”相關。這兩種模式的適用場景都是涉及多維度的。但是是存在區別的,抽象工廠模式更關注物件的建立,是建立型設計模式。而橋接模式則是關注物件建立之後的動作或者功能。所以兩者的區別是比較明顯的。
橋接模式的特點是將抽象與實現分離,在抽象層建立依賴關係,從而兩個維度上的實現類可以進行各自的變化不會相互影響,具有非常好的擴充套件性。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/200/viewspace-2799751/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java設計模式-橋接模式Java設計模式橋接
- Java設計模式之(六)——橋接模式Java設計模式橋接
- java設計模式之一 橋接模式Java設計模式橋接
- 設計模式-橋接模式設計模式橋接
- 設計模式:橋接模式設計模式橋接
- 小白設計模式:橋接模式設計模式橋接
- 設計模式之橋接模式設計模式橋接
- 設計模式(八)——橋接模式設計模式橋接
- 設計模式之【橋接模式】設計模式橋接
- javascript設計模式橋接模式JavaScript設計模式橋接
- 設計模式(十二):橋接模式設計模式橋接
- JAVA設計模式之 橋接模式【Bridge Pattern】Java設計模式橋接
- PHP 設計模式之橋接模式PHP設計模式橋接
- GoLang設計模式19 - 橋接模式Golang設計模式橋接
- 設計模式 | 橋接模式(bridge)設計模式橋接
- 9.設計模式-橋接模式設計模式橋接
- 極簡設計模式-橋接模式設計模式橋接
- Python設計模式-橋接模式Python設計模式橋接
- 大話設計模式—橋接模式設計模式橋接
- 設計模式之橋接設計模式橋接
- 設計模式(七)橋接設計模式橋接
- 設計模式之旅12--橋接模式設計模式橋接
- 23種設計模式(9)- 橋接模式設計模式橋接
- 設計模式系列 11-- 橋接模式設計模式橋接
- Android設計模式之橋接模式Android設計模式橋接
- 我學設計模式 之 橋接模式設計模式橋接
- 設計模式學習-裝飾模式,橋接模式設計模式橋接
- 《設計模式》 - 6. 橋接模式( Bridge )設計模式橋接
- 設計模式(十三)----結構型模式之橋接模式設計模式橋接
- 10.橋接模式設計思想橋接模式
- C#設計模式-橋接模式(Bridge Pattern)C#設計模式橋接
- C#設計模式系列:橋接模式(Bridge)C#設計模式橋接
- 設計模式--橋接模式Bridge(結構型)設計模式橋接
- 設計模式(五)橋接模式Bridge == Pointer To Implementation設計模式橋接
- 跟著GPT學設計模式之橋接模式GPT設計模式橋接
- Java進階篇設計模式之四 -----介面卡模式和橋接模式Java設計模式橋接
- 橋接模式橋接模式
- 從零開始學設計模式(七)—橋接模式設計模式橋接