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

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

  • 相关阅读:
    发布镜像
    实战Tomcat镜像
    Docker File介绍
    数据卷容器
    DockerFile
    具名、匿名、指定路径挂载
    实战MySQL
    SHELL 常用技巧
    CentOS6和7启动流程
    解决服务器openssh漏洞
  • 原文地址:https://www.cnblogs.com/liurui/p/5554974.html
Copyright © 2011-2022 走看看