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

         输出结果:

          

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

  • 相关阅读:
    *Triangle
    Pascal's Triangle II
    Pascal's Triangle
    Merge Sorted Array
    House Robber
    Find Peak Element
    Container With Most Water
    *Next Permutation
    top命令VIRT,RES,SHR,DATA
    Octave简单使用
  • 原文地址:https://www.cnblogs.com/ricky-wang/p/6886313.html
Copyright © 2011-2022 走看看