所謂的橋接,就是搭建一個橋,讓兩個組件之間互相調用,可以通過橋來執行
因爲有了橋,兩個代碼組件無論怎麼修改,都互相沒有影響
這個橋,實際上就是一個接口
所以說,java中,無處不橋接,只要你是面向接口編程,基本就是在橋接
public class BridgePatternDemo {
public static void main(String[] args) {
Implementor implementor = new ConcreteImplementor();
Abstraction abstraction = new RefinedAbstraction(implementor);
abstraction.execute();
/**
* implementor可以認爲是一個代碼組件,包含了一個接口和一個實現類
* abstraction可以認爲是一個代碼組件,包含了一個抽象類和一個子類
* abstraction要調用implementor的接口
* 在abstraction中包含了一個implementor的接口
* 在abstraction調用implementor的時候,實際上是面向implementor接口去編程和調用的
* 只不過我們會將implementor的實現類實例傳入abstraction中
* abstraction調用implementor就是基於一個橋去調用的
* 不是說abstraction直接僅僅面向implementor實現類去編程的,面向implementor接口去編程的
* 所以abstraction和implementor兩個代碼組件之間的橋,就是implementor接口
* 這個一個代碼組件面向另外一個代碼組件的接口來編程,就是將那個接口作爲一個橋
* 使用了橋接的設計模式來編程
* 橋接模式,都不需要運用,java之中,無處不橋接
* 幾乎所有的編程,都是面向接口去編程的
*/
}
public interface Implementor {
void execute();
}
public static class ConcreteImplementor implements Implementor {
@Override
public void execute() {
System.out.println("執行了功能邏輯");
}
}
public static abstract class Abstraction {
protected Implementor implementor;
public Abstraction(Implementor implementor) {
this.implementor = implementor;
}
public abstract void execute();
}
public static class RefinedAbstraction extends Abstraction {
public RefinedAbstraction(Implementor implementor) {
super(implementor);
}
@Override
public void execute() {
implementor.execute();
}
}
}