极速理解设计模式系列:7.桥接模式(Bridge Pattern)

简介:

四个角色:抽象类(Abstraction)、扩充抽象类(RefinedAbstraction)、实现类接口(Implementor)、具体实现类(ConcreteImplementor) 

        抽象类(Abstraction):主控类,内部有一个实现类接口(Implementor)的对象可调用。

        扩充抽象类(RefinedAbstraction):扩充抽象类,个性定制自身行为和属性继承于Abstraction。

        实现类接口(Implementor):被操作类。

        具体实现类(ConcreteImplementor) :继承并实现Implementor。

 实现思路:多个扩充抽象类继承于Abstraction主控类,并且操作其内部的Implementor的行为。以此达到控制多种具体实现类的目的。这是一个多对多的关系。

 类图:

        应用场景:人听音乐,人有很多种人(年轻人、老年人、中年人、小孩子等),音乐有很多种(摇滚音乐、乡村音乐、爵士音乐、流行音乐等)。

        分析:不同的人可以听不同种类的音乐,人的种类是会变化的,音乐的种类也是活动可变的,在这里将人和音乐抽象出来,并且将音乐的抽象放入人的抽象中去,这样人听什么音乐将有客户端决定。

        下面我们在控制台程序去演示一下如何使用Bridge Pattern:

        一、 抽象类(Abstraction)

 


 
 
  1.  //抽象类(Abstraction) 
  2. abstract class People 
  3.     private Music music; 
  4.  
  5.     public Music Music 
  6.     { 
  7.         get { return music; } 
  8.         set { music = value; } 
  9.     } 
  10.  
  11.     public abstract void StartListen(); 

        二、扩充抽象类(RefinedAbstraction)

 


 
 
  1. // 扩充抽象类(RefinedAbstraction) 
  2.  class YoungPeople : People 
  3.  { 
  4.      public override void StartListen() 
  5.      { 
  6.          Console.Write("年轻人在听"); 
  7.          Music.Play(); 
  8.      } 
  9.  } 
  10.  // 扩充抽象类(RefinedAbstraction) 
  11.  class OldPeople : People 
  12.  { 
  13.      public override void StartListen() 
  14.      { 
  15.          Console.Write("老年人在听"); 
  16.          Music.Play(); 
  17.      } 
  18.  } 

        三、实现类接口(Implementor)

 


 
 
  1. // 实现类接口(Implementor) 
  2. abstract class Music 
  3.     public abstract void Play(); 

        四、具体实现类(ConcreteImplementor) 

 


 
 
  1. // 具体实现类(ConcreteImplementor)  
  2. class RockMusic : Music 
  3.     public override void Play() 
  4.     { 
  5.         Console.WriteLine("摇滚歌曲"); 
  6.     } 
  7. // 具体实现类(ConcreteImplementor)  
  8. class CountryMusic : Music 
  9.     public override void Play() 
  10.     { 
  11.         Console.WriteLine("乡村歌曲"); 
  12.     } 

        五、客户端(Client)

 


 
 
  1. class Program 
  2.     static void Main(string[] args) 
  3.     { 
  4.         //客户端实现。 
  5.         People youngPeople = new YoungPeople(); 
  6.  
  7.         youngPeople.Music = new RockMusic(); 
  8.         youngPeople.StartListen(); 
  9.  
  10.         youngPeople.Music = new CountryMusic(); 
  11.         youngPeople.StartListen(); 
  12.         Console.WriteLine("------------------"); 
  13.  
  14.         People oldPeople = new OldPeople(); 
  15.         oldPeople.Music = new CountryMusic(); 
  16.         oldPeople.StartListen(); 
  17.  
  18.         Console.ReadLine(); 
  19.     } 

        如需源码请点击 BridgePattern.rar  下载。


本文转自程兴亮 51CTO博客,原文链接:http://blog.51cto.com/chengxingliang/826976


相关文章
|
设计模式 Java 关系型数据库
认真学习设计模式之桥接模式(Bridge Pattern)
认真学习设计模式之桥接模式(Bridge Pattern)
72 0
|
设计模式 关系型数据库
设计模式11 - 桥梁模式【Bridge Pattern】
设计模式11 - 桥梁模式【Bridge Pattern】
42 0
|
设计模式 Java
Java设计模式-桥接模式(Bridge Pattern)
Java设计模式-桥接模式(Bridge Pattern)
|
Linux Windows
结构型模式 - 桥接模式(Bridge Pattern)
结构型模式 - 桥接模式(Bridge Pattern)
|
设计模式 开发者
从零开始学设计模式(十): 桥接模式(Bridge Pattern)
桥接(Bridge)模式又称为柄体(Handle and Body)模式或接口(Interface)模式,它将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。
213 0
从零开始学设计模式(十): 桥接模式(Bridge Pattern)
|
设计模式 开发者
【愚公系列】2021年12月 二十三种设计模式(七)-桥接模式(Bridge Pattern)
【愚公系列】2021年12月 二十三种设计模式(七)-桥接模式(Bridge Pattern)
【愚公系列】2021年12月 二十三种设计模式(七)-桥接模式(Bridge Pattern)
|
Unix C# 数据库
C#设计模式之七桥接模式(Bridge Pattern)【结构型】
原文:C#设计模式之七桥接模式(Bridge Pattern)【结构型】 一、引言   今天我们要讲【结构型】设计模式的第二个模式,该模式是【桥接模式】,也有叫【桥模式】的,英文名称:Bridge Pattern。
1407 0