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

    0.C#设计模式--简单工厂模式

    1.C#设计模式--工厂方法模式

    2.C#设计模式--抽象工厂模式

    3.C#设计模式--单例模式

    4.C#设计模式--建造者模式

    5.C#设计模式--原型模式

    6.C#设计模式--设配器模式

    7.C#设计模式--装饰器模式

    8.C#设计模式--代理模式

    9.C#设计模式--外观模式

    设计模式:

    桥接模式(Bridge Pattern)

    简单介绍:

    桥接模式(Bridge Pattern):桥接模式的用意是将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化。

    生活实例:比如我们平常接触到的手机系统与软件的关系,每当有新的软件,他们会不断的支持各类系统(当然只是举例子,有的不一定一开始发布就把多个平台都支持了)

    手机系统:ios,Android……

    手机软件:微信,网易云音乐……

    桥接模式组成:

    桥接模式的结构包括Abstraction、RefinedAbstraction、Implementor、ConcreteImplementor四个部分,其中:

      Abstraction:定义抽象类的接口,它维护了一个指向Implementor类型对象的指针。

      RefinedAbstraction:扩充由Abstraction定义的接口;

      Implementor:定义实现类的接口,该接口不一定要与Abstraction的接口完全一致,事实上两个接口可以完全不同。一般情况,Implementor接口仅为提供基本操作,而 Abstraction则定义了基于基本操作的较高层次操作。

      ConcreteImplementor实现Implementor接口并定义它的具体实现。

      在桥接模式中,两个类Abstraction和Implementor分别定义了抽象与行为类型的接口,通过调用两接口的子类实现抽象与行为的动态组合。

    生活实例:Abstraction ---》SystemPlatform(系统平台接口)

        RefinedAbstraction---》ios系统平台合Android系统平台

        Implementor----》ISoftWare软件接口

        ConcreteImplementor---》微信和网易云音乐

    桥接模式类图:

    桥接模式C#代码举例

    ISoftware类:软件接口类

    1     /// <summary>
    2     /// 软件接口类
    3     /// </summary>
    4     public interface ISoftWare
    5     {
    6         void Start();
    7     }

    WeiChart:微信软件类

     1     /// <summary>
     2     /// 微信软件类
     3     /// </summary>
     4     public class WeiChart:ISoftWare
     5     {
     6         public void Start()
     7         {
     8             Console.WriteLine("微信已运行!");
     9         }
    10     }

    WanyiMusic:网易云音乐类

     1     /// <summary>
     2     /// 音乐软件类
     3     /// </summary>
     4     public class WangyiMusic:ISoftWare
     5     {
     6         public void Start()
     7         {
     8             Console.WriteLine("网易云音乐已运行!");
     9         }
    10     }

    SystemPlatform类:系统平台抽象类

    1     /// <summary>
    2     /// 运行系统平台抽象接口类
    3     /// </summary>
    4     public abstract class SystemPlatform
    5     {
    6         public abstract void Run(ISoftWare software);
    7     }

    IosSys:ios系统类

     1     /// <summary>
     2     /// ios操作系统平台
     3     /// </summary>
     4     public class IosSys:SystemPlatform
     5     {
     6         public override void Run(ISoftWare software)
     7         {
     8             Console.WriteLine("IOS系统欢迎您");
     9             software.Start();
    10         }
    11     }

    AndroidSys:Android系统类

     1     /// <summary>
     2     /// Android系统类实现
     3     /// </summary>
     4     public class AndroidSys:SystemPlatform
     5     {
     6         public override void Run(ISoftWare software)
     7         {
     8             Console.WriteLine("欢迎来到Android系统");
     9             software.Start();
    10         }
    11     }

    用户测试类:

     1     /// <summary>
     2     /// 用户测试类
     3     /// </summary>
     4     class Client
     5     {
     6         static void Main(string[] args)
     7         {
     8             //创建软件对象
     9             WeiChart weichart = new WeiChart();
    10             WangyiMusic wangyiMusic = new WangyiMusic();
    11 
    12             Console.WriteLine("-----------IOS-----------");
    13             //ios系统运行软件
    14             IosSys iosSys = new IosSys();
    15             iosSys.Run(weichart);
    16             iosSys.Run(wangyiMusic);
    17 
    18             Console.WriteLine("---------Android---------");
    19             //android系统运行软件
    20             AndroidSys androidSys = new AndroidSys();
    21             androidSys.Run(weichart);
    22             androidSys.Run(wangyiMusic);
    23 
    24             Console.Read();
    25             
    26         }
    27     }

    运行结果:

    桥接模式C#代码工程下载

  • 相关阅读:
    周纪一
    太极拳_起势
    Guidelines for clock
    Linker scripts之MEMORY
    Linker scripts之SECTIONS
    Linker scripts之Intro
    潭州课堂25班:Ph201805201 爬虫基础 第十三课 cookie (课堂笔记)
    潭州课堂25班:Ph201805201 爬虫基础 第十二课 点触验证码二 (课堂笔记)
    潭州课堂25班:Ph201805201 爬虫基础 第十一课 点触验证码 (课堂笔记)
    潭州课堂25班:Ph201805201 爬虫基础 第十课 图像处理- 极验验证码 (课堂笔记)
  • 原文地址:https://www.cnblogs.com/JiYF/p/6485244.html
Copyright © 2011-2022 走看看