• 设计模式day13


    桥接模式

    桥接模式也称为桥梁模式,接口模式或柄体模式,是将抽象部分与它的具体实现分离,使他们都可以独立地变化,属于结构型模式。

    角色

    抽象:该类持有一个对实现角色的引用,抽象角色中的方法需要实现角色来实现。抽象角色一般为抽象类(构造函数规定子类要传入一个实现对象);
    修改抽象:Abstraction的具体实现,对Abstraction的方法进行完善和扩展;
    实现:确定实现维度的基本操作,提供给Abstraction使用。该类一般为接口或抽象类;
    具体实现:Implementor的具体实现

    
    public abstract class Abstraction {
    
        protected IImplementor mImplementor;
    
        public Abstraction(IImplementor implementor) {
            this.mImplementor = implementor;
        }
    
        public void operation() {
            this.mImplementor.operationImpl();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    
    public class ConcreteImplementorA implements IImplementor {
    
        public void operationImpl() {
            System.out.println("I'm ConcreteImplementor A");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    
    public class ConcreteImplementorB implements IImplementor {
    
        public void operationImpl() {
            System.out.println("I'm ConcreteImplementor B");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    public interface IImplementor {
        void operationImpl();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    public class RefinedAbstraction extends Abstraction {
        public RefinedAbstraction(IImplementor implementor) {
            super(implementor);
        }
    
        @Override
        public void operation() {
            super.operation();
            System.out.println("refined operation");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    public class Test {
        public static void main(String[] args) {
            // 来一个实现化角色
            IImplementor imp = new ConcreteImplementorA();
            // 来一个抽象化角色,聚合实现
            Abstraction abs = new RefinedAbstraction(imp);
            // 执行操作
            abs.operation();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    应用场景

    当一个类内部具备两种或多种变化维度时,使用桥接模式可以解耦这些变化的维度,使高层代码架构稳定。桥接模式适用于以下几种业务场景:
    1,在抽象和具体实现之间需要增加更多的灵活性的场景。
    2一个类存在两个(或多个)独立变化的维度,而这两个(或多个)维度都需要独立进行扩展。
    3,不希望使用继承,或因为多层继承导致系统类的个数剧增。

    优缺点

    优点1,分离抽象部分及其具体实现部分
    2,提高了系统的扩展性
    3,符合开闭原则
    4,符合合成复用原则
    缺点:
    1,增加系统的理解与设计难度
    2,需要正确地识别系统中两个独立变化的维度

  • 相关阅读:
    中秋节在女友手上p了一个超级漂亮的月亮
    Java基础
    【Flink】事务型Sink连接器、kafka连接器、写入到redis、mysql
    存内计算技术在边缘计算、物联网设备中的应用及前景
    欢迎 Gemma: Google 最新推出开源大语言模型
    lottie-web 动画
    数据分析 第三周 (numpy数组的处理 , numpy数组的运用与画图的结合)笔记
    RabbitMQ详情
    TCP/IP、OSI七层模型---开放式系统互联模型
    Android OpenCV竖屏处理策略和底层代码修改
  • 原文地址:https://blog.csdn.net/weixin_49349744/article/details/125384716