美文网首页
桥接模式

桥接模式

作者: yuzhiyi_宇 | 来源:发表于2019-03-03 20:27 被阅读0次

    桥接模式(Bridge),将抽象部分与它的实现部分分离,使它们都可以独立地变化。

    桥接模式结构图

    外观模式中的角色:

    • Abstraction:抽象类,抽象化给出的定义,并保存一个对实现化对象的引用。
    • RefinedAbstraction:扩充抽象类,扩展抽象化角色,改变和修正父类对抽象化的定义。
    • Implementor:实现类接口,定义实现类的接口。
    • ConcreteImplementor:具体实现类,具体实现 Implementor 接口。

    桥接模式简单实现

    (1)实现类接口

    public abstract class Implementor {
        public abstract void operation();
    }
    

    (2)具体实现类

    public class ConcreteImplementorA extends Implementor {
    
        @Override
        public void operation() {
            System.out.println("Windows 小游戏启动");
        }
    }
    
    public class ConcreteImplementorB extends Implementor  {
    
        @Override
        public void operation() {
            System.out.println("Linux 小游戏启动");
        }
    }
    
    

    (3) 抽象类

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

    (4)扩充抽象类

    public class RefinedAbstraction extends Abstraction {
        @Override
        public void operation() {
            implementor.operation();
        }
    }
    

    (5)客户端调用

    public class Client {
        public static void main(String[] args) {
            Abstraction abstraction = new RefinedAbstraction();
            abstraction.setImplementor(new ConcreteImplementorA());
            abstraction.operation();
    
            abstraction.setImplementor(new ConcreteImplementorB());
            abstraction.operation();
        }
    }
    

    (6)输出

    Windows 小游戏启动
    Linux 小游戏启动
    

    桥接模式使用场景

    使用场景:

    • 如果你不希望在抽象和实现部分采用固定的绑定关系,可以采用桥接模式,来把抽象和实现部分分开,然后在程序运行期间来动态的设置抽象部分需要用到的具体的实现,还可以动态切换具体的实现。
    • 如果出现抽象部分和实现部分都应该可以扩展的情况,可以采用桥接模式,让抽象部分和实现部分可以独立的变化,从而可以灵活的进行单独扩展,而不是搅在一起,扩展一边会影响到另一边。
    • 如果希望实现部分的修改,不会对客户产生影响,可以采用桥接模式,客户是面向抽象的接口在运行,实现部分的修改,可以独立于抽象部分,也就不会对客户产生影响了,也可以说对客户是透明的。
    • 如果采用继承的实现方案,会导致产生很多子类,对于这种情况,可以考虑采用桥接模式,分析功能变化的原因,看看是否能分离成不同的纬度,然后通过桥接模式来分离它们,从而减少子类的数目。

    相关文章

      网友评论

          本文标题:桥接模式

          本文链接:https://www.haomeiwen.com/subject/rwymuqtx.html