chromium 新增features特性編譯引數開關
阿新 • • 發佈:2020-11-05
技術標籤:設計思想
橋接模式
該模式是當兩種行為需要排列組合使用時的最佳實踐,例如遊戲裡不同的武器可以有不同的附魔效果、不同的男人和不同的女人會產生不同的結果、生活中的不同的茶壺泡不同的茶葉。但要說明的是,兩個行為並不會被另一行為所影響,下面的示例有一定的瑕疵,因為不同的茶壺泡一種茶可能會有不同的味道(但是我喝不出來有什麼不同)。下面簡單將泡茶分為三個階段:
階段 | 茶壺 | 茶葉 |
---|---|---|
1 | 溫壺 | 準備茶葉 |
2 | 倒入水 | 投入茶葉 |
3 | 茶成 | 飄出茶香 |
1.使用橋接
/**
* 茶壺
*/
public interface Teapot {
/**
* 溫壺
*/
void warmPot ();
/**
* 倒入水
*/
void pourWater();
/**
* 茶成
*/
void endSuccess();
Tea getTea();
}
public interface Tea {
/**
* 準備茶葉
*/
void prepared();
/**
* 投入茶葉
*/
void fromTopDropIn();
/**
* 飄出茶香
*/
void scent();
}
實現類
/**
* 紫砂壺泡不同的茶
*/
public class ZiShaTeapot implements Teapot{
private final Tea tea;
public ZiShaTeapot(Tea tea) {
this.tea = tea;
}
@Override
public void warmPot() {
System.out.println("開始溫紫砂壺");
tea.prepared();
}
@Override
public void pourWater() {
System.out.println("倒入80°C的水");
tea.fromTopDropIn();
}
@Override
public void endSuccess() {
System.out.println("壺壁飄香");
tea.scent();
}
@Override
public Tea getTea() {
return tea;
}
}
/**
* 龍井可以放入不同的茶壺
*/
public class LongJingTea implements Tea{
@Override
public void prepared() {
System.out.println("準備龍井茶");
}
@Override
public void fromTopDropIn() {
System.out.println("投入龍井茶");
}
@Override
public void scent() {
System.out.println("散發出淡而遠的清香氣!");
}
}
@Test
public void test(){
Teapot teapot = new ZiShaTeapot(new LongJingTea());
teapot.warmPot();
teapot.pourWater();
teapot.endSuccess();
// 輸出如下:
// 開始溫紫砂壺
// 準備龍井茶
// 倒入80°C的水
// 投入龍井茶
// 壺壁飄香
// 散發出淡而遠的清香氣!
}
2.總結
當某件事需要兩種行為互相配合完成且兩種行為各自擁有不同的形態,使用橋接模式是最佳實踐