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

         输出结果:

          

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

  • 相关阅读:
    .NET日期格式化
    Win7 计算机(我的电脑)右键菜单“管理”打不开,解决方法
    没有对“Temporary ASP.NET Files”的写访问权限
    Android安装jsk出错
    WPF 处理 系统Scale参数
    WPF WindowChrome 自定义标题栏时窗体阴影效果设置
    使用WindowChrome 在切换ResizeMode值时的问题
    Vue.js provide / inject 踩坑
    MYSQL 查询日期最大的那条记录
    所有子一级元素添加阴影
  • 原文地址:https://www.cnblogs.com/ricky-wang/p/6886313.html
Copyright © 2011-2022 走看看