美文网首页设计模式
设计模式 桥接模式

设计模式 桥接模式

作者: Yohann丶blog | 来源:发表于2020-06-09 16:31 被阅读0次
WechatIMG30.jpeg

介绍

桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立变化。有独立存在,扩展性强的特点。应用在需要不断更换调用对象却执行相同的调用方法,实现扩展功能的场景。

角色

角色 说明
Abstraction 定义抽象类,并包含一个对实现化对象的引用
Refined Abstraction 是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法
Implementor 定义实现化角色的接口,供扩展抽象化角色调用
ConcreteImplementor 给出实现化角色接口的具体实现

角色示例

类名 担任角色 说明
Size Abstraction 定义果茶杯子规格类,实现不用规格
NormalSize Refined Abstraction 定义正常杯类
BigSize Refined Abstraction 定义大杯类
SmallSize Refined Abstraction 定义小杯类
Ice Abstraction 定义冰量类,实现不用冰量
NormalIce Refined Abstraction 定义正常冰类
LessIce Refined Abstraction 定义少冰类
WithoutIce Refined Abstraction 定义不加冰类
FruitTea Implementor 定义配置果茶的方法,来配置具体果茶
MangoTea ConcreteImplementor 芒果茶类
StrawberryTea ConcreteImplementor 草莓茶类

UML类图

桥接模式.jpg

代码

<?php  
interface Size{
    public function setSize();
}

class NormalSize implements Size
{
    public function setSize()
    {
        return '正常杯';
    }
}

class BigSize implements Size
{
    public function setSize()
    {
        return '大杯';
    }
}

class SmallSize implements Size
{
    public function setSize()
    {
        return '小杯';
    }
}

interface Ice{
    public function setIce();
}

class NormalIce implements Ice
{
    public function setIce()
    {
        return '正常杯';
    }
}

class LessIce implements Ice
{
    public function setIce()
    {
        return '少冰';
    }
}

class WithoutIce implements Ice
{
    public function setIce()
    {
        return '不加冰';
    }
}

abstract class FruitTea{
    protected $size; 
    protected $ice; 

    public function __construct(Size $size, Ice $ice)
    {
        $this->size = $size;
        $this->ice = $ice;
    }

    abstract public function getTea();
}

class MangoTea extends FruitTea
{
    public function getTea()
    {
        return "芒果茶".$this->size->setSize().$this->ice->setIce();
    }
}

class StrawberryTea extends FruitTea
{
    public function getTea()
    {
        return "草莓茶".$this->size->setSize().$this->ice->setIce();
    }
}

$bigSize = new BigSize();
$withoutIce = new WithoutIce();
$mangoTea = new MangoTea($bigSize, $withoutIce);
echo $mangoTea->getTea();

创建 FruitTea.php,内容如上。

执行

$ php FruitTea.php
芒果茶大杯不加冰

相关文章

  • 设计模式-桥接模式

    设计模式-桥接模式 定义 桥接模式(Bridge Pattern)也称为桥梁模式、接口(Interface)模式或...

  • 桥接模式

    设计模式:桥接模式(Bridge)

  • 设计模式——桥接模式

    设计模式——桥接模式 最近公司组件分享设计模式,然而分配给我的是桥接模式。就在这里记录我对桥接模式的理解吧。 定义...

  • 设计模式之桥接模式

    设计模式之桥接模式 1. 模式定义 桥接模式又称柄体模式或接口模式,它是一种结构性模式。桥接模式将抽象部分与实现部...

  • 桥接模式

    介绍 桥接模式(Bridge Pattern) 也称为桥梁模式,是结构型设计模式之一。桥接模式的作用就是连接 "两...

  • Java设计模式——桥接模式

    Java设计模式之桥接模式 回顾 上一期分享了适配器模式,主要为了实现解耦 桥接模式 简介 桥接模式是对象的结构模...

  • 设计模式-桥接模式

    桥接模式介绍 桥接模式(Bridge Pattern)也称为桥梁模式,是结构型设计模式之一。顾名思义其与现实中的桥...

  • Android设计模式——桥接模式(七大结构型)

    1.桥接模式介绍 桥接模式(Bridge Pattern)也称为桥梁模式,是七大结构型设计模式之一。 2....

  • 2、桥接模式(结构型)

    第一次接触桥接模式是在刷面试题时,遇到问jdbc主要用到的设计模式是?桥接模式。 桥接模式(Bridge):将抽象...

  • Java设计模式<桥接模式>

    Java设计模式<桥接模式> 意图 桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将...

网友评论

    本文标题:设计模式 桥接模式

    本文链接:https://www.haomeiwen.com/subject/zzfetktx.html