• 设计模式学习笔记-桥接模式


    一、概述

          将抽象部分与它的实现部分分离,使它们都可以独立地变化。

    二、模式中的角色

         Abstraction:定义抽象类的接口;维护一个指向Implementor类型对象的指针;

         RefinedAbstraction:扩充由Abstraction定义的接口;

         Implementor:定义具体行为,具体特征的应用接口;

         ConcreteImplementor:实现Implementor。

    三、UML类图

    四、代码实现

          4.1 桥接模式的实现代码

        /// <summary>
        /// 实现
        /// </summary>
        public abstract class Implementor
        {
            public abstract void OperationImp();
        }
    
    
        public class ConcreteImplementorA : Implementor
        {
            /// <summary>
            /// 具体实现
            /// </summary>
            public override void OperationImp()
            {
                Console.WriteLine("具体实现A的执行");
            }
        }
    
    
        public class ConcreteImplementorB : Implementor
        {
    
            public override void OperationImp()
            {
                Console.WriteLine("具体实现B的执行");
            }
        }
    
        /// <summary>
        /// 抽象
        /// </summary>
        public abstract class Abstraction
        {
            protected Implementor implementor;
    
            public void SetImplementor(Implementor imp)
            {
                this.implementor = imp;
            }
    
            public abstract void Opration();
        }
    
    
        /// <summary>
        /// 被提炼的抽象
        /// </summary>
        public class RefinedAbstraction: Abstraction
        {
            public override void Opration()
            {
                implementor.OperationImp();
            }
        }

          4.2 客户端实现

                #region 桥接模式
                Abstraction abstraction = new RefinedAbstraction();
    
                abstraction.SetImplementor(new ConcreteImplementorA());
                abstraction.Opration();
    
                abstraction.SetImplementor(new ConcreteImplementorB());
                abstraction.Opration();
    
    
                #endregion

         输出结果:

          

    参考书籍《设计模式-可复用面向对象软件的基础》

  • 相关阅读:
    Swift扩展(Extension)
    Swift构造器(Initializer)与析构器(Deinitializer)
    Swift下标
    Swift方法
    Swift属性
    Swift类与结构体
    Swift闭包(Closure)
    python调用c++/c 共享库,开发板上编译的一些坑!
    python调用c++类方法(2)
    ubuntu 18.04 gcc g++降级4.8版
  • 原文地址:https://www.cnblogs.com/ricky-wang/p/6886313.html
Copyright © 2020-2023  润新知