设计模式之:桥接模式

所谓的桥接,就是搭建一个桥,让两个组件之间互相调用,可以通过桥来执行

因为有了桥,两个代码组件无论怎么修改,都互相没有影响

这个桥,实际上就是一个接口

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

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值