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

    桥接模式:将抽象出来的那部分和它的实现(方法、操作)部分分离,使它们可以独立变化。(两者间通过构造函数注入依赖)

     1 namespace DesignModel.桥接模式
     2 {
     3 
     4     /// <summary>
     5     /// 操作抽象类
     6     /// </summary>
     7     abstract class FileOperate
     8     {
     9         public abstract void Operate(string type);
    10     }
    11 
    12     class Export : FileOperate
    13     {
    14         public override void Operate(string type)
    15         {
    16             switch (type)//这里可做进一步优化,但不影响说明本模式
    17             {
    18                 default:
    19                     Console.WriteLine("导出" + type);
    20                     break;
    21             }
    22         }
    23     }
    24 
    25     class Convent : FileOperate
    26     {
    27         public override void Operate(string type) => Console.WriteLine("转换" + type);
    28 
    29     }
    30 
    31 
    32 
    33     abstract class File
    34     {
    35         protected FileOperate fileOperate { get; set; }
    36         public void SetOperate(FileOperate fo) => fileOperate = fo;
    37 
    38         public abstract void Operate();
    39     }
    40 
    41     class Excel : File
    42     {
    43         public override void Operate() => fileOperate.Operate(nameof(Excel));
    44     }
    45 
    46     class Text : File
    47     {
    48         public override void Operate() => fileOperate.Operate(nameof(Text));
    49     }
    50 
    51 }
    52 
    53   static void 桥接模式()
    54         {
    55             File f = new Excel();
    56             FileOperate fo = new Export();
    57             f.SetOperate(fo);//给文件指定操作类型
    58             f.Operate();//调用指定的操作
    59         }
    View Code

    使用的代码给人组合模式的的感觉,相同的是这种分而治之的思想,细想不同之处在于:桥接模式将原业务分解之后,部分可以自由变化,再组装起来使用。而组合模式是将相同的部分分解出来,可以组合到其它部分以复用,是树状结构。

  • 相关阅读:
    【web charting】21个Javascript图表插件程序
    【IOC框架】分析与理解
    【待续】【HTML5】用Canvas标签创建第一张条线图
    【转】大型网站后台架构的演变
    初探Visual C# SQL CLR Database Project
    Js中 关于top、clientTop、scrollTop、offsetTop
    JS的正则表达式
    jquery的extend和fn.extend
    C/C++版数据结构之链表<三>
    C/C++ 一点笔记(2)
  • 原文地址:https://www.cnblogs.com/liurui/p/5554974.html
Copyright © 2011-2022 走看看