zoukankan      html  css  js  c++  java
  • 设计模式之桥接模式

    设计模式之桥接模式

    桥接模式定义:将抽象和实现解耦,使得两者可以独立变化

    关键点:1.分离抽象和具体 2.用聚合方式(桥)连接抽象和具体

     用的不多,了解即可

    桥梁模式通过类图

    Abstraction:抽象化角色

     它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类

    Implementor:实现化角色

    它是接口或者抽象类,定义角色必需的行为和属性。

    RefinedAbstraction:抽象化角色的具体

    ConcreteImplementor:实现化角色的具体

    2.桥接模式通用源码

    2.1 实现化角色

    public interface Implementor {
    
        void doSomething();
    
        void doAnything();
    }
    

    2.2 创建实现化角色具体

    public class ConcreteImplementor1 implements Implementor {
        @Override
        public void doSomething() {
            // 业务逻辑处理
        }
    
        @Override
        public void doAnything() {
            // 业务逻辑处理
        }
    }
    

    2.3 创建 抽象化角色

    public abstract class Abstraction {
        // 定义对实现化角色的引用
        private Implementor implementor;
    
        public Abstraction(Implementor implementor) {
            this.implementor = implementor;
        }
    
        // 自身的行为和属性
        public void request() {
            this.implementor.doSomething();
        }
    
        // 实现化角色
        public Implementor getImplementor() {
            return implementor;
        }
    }
    

    2.4 创建抽象化角色具体

    public class RefineAbstraction extends Abstraction {
    
        public RefineAbstraction(Implementor implementor) {
            super(implementor);
        }
    
        // 修正父类的行为
        @Override
        public void request() {
            super.request();
            super.getImplementor().doAnything();
        }
    }
    

    2.5 创建Client调用

    public class Client {
        public static void main(String[] args) {
            // 定义一个实现化角色
            Implementor implementor = new ConcreteImplementor1();
            // 定义一个抽象化角色
            Abstraction abstraction = new RefineAbstraction(implementor);
            // 执行代码
            abstraction.request();
        }
    }
    

    3.桥接模式的优点

    •   抽象和实现分类:为了解决继承的缺陷而提出的设计模式
    •   优秀的扩充能力
    •   实现细节归客户透明

    4.桥接模式的使用场景

    •   不希望或者不适合使用继承的场景
    •   抽象或者抽象类不稳定的场景
    •   重要性要求较高的场景

    桥接模式的意图还是对变化的封装,尽量把可能变化的因素封装到最细,最小的逻辑单元之中,避免风险扩散

  • 相关阅读:
    动态内存开辟(一)
    结构体,联合体,枚举,typedef
    练习使用C++的string类
    WIN10 + Qt 5.14(MSVC 2017,32bit) + APP项目(minGW-7.3.0 32bit)+glog
    扫雷游戏
    最小栈实现
    快速排序算法
    c++语句(循环)
    C++ 存储类
    C++ 运算符
  • 原文地址:https://www.cnblogs.com/yingxiaocao/p/13520872.html
Copyright © 2011-2022 走看看