• 设计模式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,需要正确地识别系统中两个独立变化的维度

  • 相关阅读:
    基于Java的毕业设计选题管理系统设计与实现(源码+lw+部署文档+讲解等)
    直播课堂系统03-model类及实体
    Linux登录自动执行脚本
    两招提升硬盘存储数据的写入效率
    MyBatis核心配置文件解析: 一步步深入理解mybatis-config.xml
    java-jni 十进制转十六进制应用,根据基址获取包裹首地址
    Git 笔记 - git diff
    公众号数据分析总结怎么做?教你玩转公众号后台数据
    [附源码]java毕业设计生产型企业员工管理系统
    「经验总结」高效开发,老代码可以这样动
  • 原文地址:https://blog.csdn.net/weixin_49349744/article/details/125384716