設計模式之:橋接模式

所謂的橋接,就是搭建一個橋,讓兩個組件之間互相調用,可以通過橋來執行

因爲有了橋,兩個代碼組件無論怎麼修改,都互相沒有影響

這個橋,實際上就是一個接口

所以說,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();
        }

    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章