橋接模式(BridgePattern)是設計模式中結構型模式的一種,所以,它也是通過繼承組合的關係來實現。
橋接模式是用於把抽象化和實現化解耦,即增加雙方的獨立性和靈活性。具體來說:
- 創建接口和實現接口的類,這是來實現功能的
- 創建抽象類和繼承類,這是表現功能的
- 兩者之間的連接是通過將接口放入抽象類中,作爲成員變量
生活中有很多這樣的模式,比如開關,其表現和具體實現是分離的,我們只能通過開關,而不知道具體實現細節。
寫個小例子來加深印象
小例子:我們都知道智能機器人是有許多功能的,我們也可以將其功能的具體實現和功能表現來分離來寫,只能看到機器人的動作表現,不知道如何實現。
interface FunctionRobert{ //該接口規定要實現的功能
public void Function(String s);
}
class Sit implements FunctionRobert{ //實現該接口的類
@Override
public void Function(String s) {
System.out.println(s);
}
}
class Walk implements FunctionRobert{ //實現該接口的類
@Override
public void Function(String s) {
System.out.println(s);
}
}
abstract class ActionRobert{ //抽象方法規定表示方法
FunctionRobert functionRobert; //接口型對象作爲成員變量
ActionRobert(FunctionRobert functionRobert){
this.functionRobert=functionRobert;
}
abstract void action();
}
class Play extends ActionRobert{ //繼承抽象類的類實現表現
Play(String s1,FunctionRobert functionRobert) {
super(functionRobert);
this.s1=s1;
}
void action(){
functionRobert.Function(s1);
}
private String s1;
}
public class BridgePatternDemo {
public static void main(String[] args) {
ActionRobert sit=new Play("機器人坐下了",new Sit());
ActionRobert walk=new Play("機器人走路",new Walk());
sit.action();
walk.action();
}
}
輸出:
機器人坐下了
機器人走路
總結:
- 接口作爲抽象類的成員(組合)
- 應用了多態:接口回調
- 與適配器模式相比,適配器模式較複雜一點,且適配器更專注的是功能的增加