首页 > 其他分享 >结构型设计模式-桥接(模块化) Bridge

结构型设计模式-桥接(模块化) Bridge

时间:2023-09-06 13:46:10浏览次数:33  
标签:function Bridge Abstraction 桥接 implementation abstraction operation 设计模式 public

简介

桥接模式可将一系列紧密相关的、水平等级的类,转变为组合关系,形成垂直等级关系。

如抽象类 Color、Shape,分别有 RedColor、BlueColor、CircleShape、SquareShape 的实现类,那么想创建红色方形,则可以将 Shape 类中持有 Color 引用,动态向 Shape 中注入 Color 实现即可。

否则分别实现 RedCircleShape、RedSquareShape、BlueCircleShape、BlueCircleShape 的话,假如再新增一个维度,实现类则需要修改,并新增很多实例。

桥接更直接的说就是组件化,模块化,让 A 中持有 B 的引用,B 可以随意调换,形成不同组合。

类图

角色

  • 抽象实体 A

    A 中包含实体 B 的引用

  • A 的具体实现

  • 抽象实体 B

  • B 的具体实现

类图

图中的 Remote 和 Device 中间,就是桥接。Remote 内部持有一个 Device 的引用:device。通过 set 不同的 device,实现 Remote 与 Device 的不同组合。

类图

代码

class Abstraction
{
    protected $implementation;

    public function __construct(Implementation $implementation)
    {
        $this->implementation = $implementation;
    }

    public function operation(): string
    {
        return "Abstraction: Base operation with:\n" .
            $this->implementation->operationImplementation();
    }
}

class ExtendedAbstraction extends Abstraction
{
    public function operation(): string
    {
        return "ExtendedAbstraction: Extended operation with:\n" .
            $this->implementation->operationImplementation();
    }
}

interface Implementation
{
    public function operationImplementation(): string;
}

class ConcreteImplementationA implements Implementation
{
    public function operationImplementation(): string
    {
        return "ConcreteImplementationA: Here's the result on the platform A.\n";
    }
}

class ConcreteImplementationB implements Implementation
{
    public function operationImplementation(): string
    {
        return "ConcreteImplementationB: Here's the result on the platform B.\n";
    }
}

function clientCode(Abstraction $abstraction)
{
    echo $abstraction->operation();
}

$implementation = new ConcreteImplementationA();
$abstraction = new Abstraction($implementation);
clientCode($abstraction);

$implementation = new ConcreteImplementationB();
$abstraction = new ExtendedAbstraction($implementation);
clientCode($abstraction);

output:

Abstraction: Base operation with:
ConcreteImplementationA: Here's the result on the platform A.
ExtendedAbstraction: Extended operation with:
ConcreteImplementationB: Here's the result on the platform B.

本文由mdnice多平台发布

标签:function,Bridge,Abstraction,桥接,implementation,abstraction,operation,设计模式,public
From: https://www.cnblogs.com/caipi/p/17682086.html

相关文章

  • 结构型设计模式-适配器 Adapter
    结构型设计模式-适配器Adapterdate:April13,2021slug:design-pattern-adapterstatus:Publishedtags:设计模式type:Page简介适配器模式是一种结构型设计模式,它能使接口不兼容的对象能够相互合作角色Client接口/Target目标接口用户使用的接口Adaptee被......
  • 创建型设计模式-原型 Prototype
    简介原型模式支持按照一个对象为模板,创建出另一个一模一样的对象。简单说就是把A对象的属性,都赋值到B上,注意必须是深拷贝,即clone后的AB关联的对象是不同的对象。角色抽象原型类定义clone方法具体实现类实现clone方法类图代码classPrototype{p......
  • 创建型设计模式-单例 Singleton
    简介全局共用一个对象,好处是对象只实例化一次,减少资源占用角色单例类返回本类的唯一一个实例代码classSingleton{privatestatic$instances=[];protectedfunction__construct(){}protectedfunction__clone(){}publicfunction__wa......
  • 学习笔记-设计模式-创建型模式-工厂模式
    工厂模式工厂模式是一种创建者设计模式,细分之下可以分成三类简单工厂模式,工厂方法模式和抽象工厂模式。简单工厂模式最简单的工厂模式,它采用静态方法的方式来决定应该应该生产什么商品。publicclassStoreFactory{publicstaticICommoditygetCommodityService(Integ......
  • Bridge Pattern
    WhatisBridgePattern桥接模式(BridgePattern),旨在将抽象部分和实现部分解耦,使它们可以独立地变化。该模式通过将抽象和实现分离,使它们可以独立地进行扩展和修改,同时通过桥接(Bridge)将它们连接起来。将一个事物原本耦合在一起的东西,通过定义成抽象和实现两个维度,做到解耦,解耦就......
  • 【23种设计模式】桥接模式(七)
    前言【桥接模式】是【结构型】设计模式的第二个模式,也有叫【桥模式】的,英文名称:BridgePattern。大家第一次看到这个名称会想到什么呢?我第一次看到这个模式根据名称猜肯定是连接什么东西的。因为桥在我们现实生活中经常是连接着A地和B地,再往后来发展,桥引申为一种纽带,比如:丝绸之......
  • 单例设计模式
    单例设计模式基本介绍类的单例设计模式,就是采取一定的方式保证在整个的软件系统中,对某个类只能有一个对象实例存在,且类提供一个静态方法,用以获取该对象。例如Hibernate的SessionFactory,它是sql会话工厂,这个对象一定是很重的(创建需要加载很多资源和时间),一般情况下,只需要一个Se......
  • 设计模式- 单例模式
    单例模式是一种创建型设计模式,可以保证一个类型有且只有一个实例存在单例模式的适用于什么场景当一个类在程序运行期间只需要一个实例的时候,就可以考虑将其做成单例模式例如一些全局的配置,用来储存程序运行期间全局的共享配置,或者可以做一个简单的消息管道,程序中所有......
  • 设计模式备忘录+命令模式实现Word撤销恢复操作
    文章目录前言思路代码实现uml类图总结前言最近学习设计模式行为型的模式,学到了备忘录模式提到这个模式可以记录一个对象的状态属性值,用于下次复用,于是便想到了我们在Windows系统上使用的撤销操作,于是便想着使用这个模式进行一次模仿复现思路以下是按照备忘录和命令模式结合的思路......
  • 设计模式行为模式-访问者模式
    文章目录介绍基本原理1.定义访问者模式2.角色及其职责2.1元素(Element)2.2具体元素(ConcreteElement)2.3访问者(Visitor)2.4具体访问者(ConcreteVisitor)2.5对象结构(ObjectStructure)3.访问者模式的工作流程适用场景1.对象结构稳定,但需要经常增加新的操作2.处理复杂的对象结构,并......