桥接模式

来源:互联网 发布:如何申请开淘宝网店 编辑:程序博客网 时间:2024/06/08 04:53
概述:
在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。
意图:
   将抽象部分与实现部分分离,使它们都可以独立的变化。

                                                                    ——《设计模式》GOF

        我的理解就是实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分类分离出来让他们独立变化,减少他们之间的耦合。

结构图:



public abstract class Implementor {

    public abstract void operation();
}


public class ConcreteImplementA extends Implementor {
    @Override
    public void operation() {
        System.out.println("具体实现A的方法执行");
    }
}


public class ConcreteImplementB extends Implementor {
    @Override
    public void operation() {
        System.out.println("具体实现B的方法执行");
    }
}



public class Abstraction {

    protected Implementor implementor;
    
    public void setImplementor(Implementor implementor) {
        this.implementor = implementor;
    }
    
    public void operation(){
        implementor.operation();
    }
}


public class RefinedAbstraction extends Abstraction {

    @Override
    public void operation() {
        implementor.operation();
    }
}


public static void main(String[] args) {

        Abstraction ab = new RefinedAbstraction();
        ab.setImplementor(new ConcreteImplementA());
        ab.operation();
        
        ab.setImplementor(new ConcreteImplementB());
        ab.operation();
    }
0 0