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

简介:

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

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

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

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

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

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

 类图:

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

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

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

        一、 抽象类(Abstraction)

复制代码
     //抽象类(Abstraction)
abstract class People
{
private Music music;

public Music Music
{
get { return music; }
set { music = value; }
}

public abstract void StartListen();
}
复制代码

        二、扩充抽象类(RefinedAbstraction)

复制代码
   // 扩充抽象类(RefinedAbstraction)
class YoungPeople : People
{
public override void StartListen()
{
Console.Write(
"年轻人在听");
Music.Play();
}
}
// 扩充抽象类(RefinedAbstraction)
class OldPeople : People
{
public override void StartListen()
{
Console.Write(
"老年人在听");
Music.Play();
}
}
复制代码

        三、实现类接口(Implementor)

    // 实现类接口(Implementor)
abstract class Music
{
public abstract void Play();
}

        四、具体实现类(ConcreteImplementor) 

复制代码
    // 具体实现类(ConcreteImplementor) 
class RockMusic : Music
{
public override void Play()
{
Console.WriteLine(
"摇滚歌曲");
}
}
// 具体实现类(ConcreteImplementor)
class CountryMusic : Music
{
public override void Play()
{
Console.WriteLine(
"乡村歌曲");
}
}
复制代码

        五、客户端(Client)

复制代码
    class Program
{
static void Main(string[] args)
{
//客户端实现。
People youngPeople = new YoungPeople();

youngPeople.Music
= new RockMusic();
youngPeople.StartListen();

youngPeople.Music
= new CountryMusic();
youngPeople.StartListen();
Console.WriteLine(
"------------------");

People oldPeople
= new OldPeople();
oldPeople.Music
= new CountryMusic();
oldPeople.StartListen();

Console.ReadLine();
}
}
复制代码
相关文章
|
7月前
|
关系型数据库 Java MySQL
【设计模式】【结构型模式】桥接模式(Bridge)
一、入门 什么是桥接模式? 桥接模式(Bridge Pattern)是一种结构型设计模式,核心思想是将抽象与实现分离,让它们可以独立变化。简单来说,它像一座“桥”连接了两个维度的变化,避免用继承导致代
388 10
|
9月前
|
设计模式 Java 数据安全/隐私保护
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。
|
11月前
|
设计模式 前端开发 数据库
「全网最细 + 实战源码案例」设计模式——桥接模式
桥接模式(Bridge Pattern)是一种结构型设计模式,通过将抽象部分与实现部分分离,使它们可以独立变化,从而降低代码耦合度,避免类爆炸,提高可扩展性。其结构包括实现类接口、具体实现类、抽象类和精确抽象类。适用于多维度扩展类、隐藏实现细节、简化庞杂类以及运行时切换实现方法的场景。优点包括高扩展性、隐藏实现细节、遵循开闭原则和单一职责原则;缺点是可能增加代码复杂度。示例中展示了不同操作系统播放不同格式视频文件的实现。
237 19
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
设计模式 PHP 开发者
PHP中的设计模式:桥接模式的解析与应用
在软件开发的浩瀚海洋中,设计模式如同灯塔一般,为开发者们指引方向。本文将深入探讨PHP中的一种重要设计模式——桥接模式。桥接模式巧妙地将抽象与实现分离,通过封装一个抽象的接口,使得实现和抽象可以独立变化。本文将阐述桥接模式的定义、结构、优缺点及其应用场景,并通过具体的PHP示例代码展示如何在实际项目中灵活运用这一设计模式。让我们一起走进桥接模式的世界,感受它的魅力所在。
|
设计模式 自然语言处理 算法
PHP中的设计模式:桥接模式的深入探索与应用
在PHP开发中,理解并运用设计模式是提升代码质量与可维护性的关键。本文聚焦于桥接模式——一种结构型设计模式,它通过封装一个抽象的接口,将实现与抽象分离,从而使得它们可以独立变化。不同于传统摘要的概述式表述,本文将以故事化的情境引入,逐步解析桥接模式的精髓,通过PHP代码示例详细展示其在实际项目中的应用,旨在为读者提供一个既深刻又易于理解的学习体验。
150 19
|
设计模式 XML 存储
【七】设计模式~~~结构型模式~~~桥接模式(Java)
文章详细介绍了桥接模式(Bridge Pattern),这是一种对象结构型模式,用于将抽象部分与实现部分分离,使它们可以独立地变化。通过实际的软件开发案例,如跨平台视频播放器的设计,文章阐述了桥接模式的动机、定义、结构、优点、缺点以及适用场景,并提供了完整的代码实现和测试结果。桥接模式适用于存在两个独立变化维度的系统,可以提高系统的可扩展性和灵活性。
【七】设计模式~~~结构型模式~~~桥接模式(Java)
|
设计模式 Java
Java设计模式-桥接模式(9)
Java设计模式-桥接模式(9)
|
设计模式 Java
Java设计模式之桥接模式
这篇文章介绍了Java设计模式中的桥接模式,包括桥接模式的目的、实现方式,并通过具体代码示例展示了如何分离抽象与实现,使得两者可以独立变化。
150 0
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。

热门文章

最新文章