zoukankan      html  css  js  c++  java
  • 设计模式学习笔记-桥接模式

    一、概述

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

    二、模式中的角色

         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

         输出结果:

          

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

  • 相关阅读:
    30、Java中Set集合之HashSet、TreeSet和EnumSet
    此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求。
    C# 关闭显示器(显示)
    29、java中阻塞队列
    28、队列和栈
    27、ArrayList和LinkedList的区别
    26、线性表(List)
    WMI使用的WIN32_类库名
    android 怎样加速./mk snod打包
    hdu1081 最大子矩阵
  • 原文地址:https://www.cnblogs.com/ricky-wang/p/6886313.html
Copyright © 2011-2022 走看看