栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

设计模式之桥接模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式之桥接模式

什么是桥接模式

官方解释:桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。

我的理解:将原来有关联的类全都单独剥离出来,比如A继承B,B继承C,单独封装为A、B、C,解除三者的继承关系,实现解耦,以免继承太多,给代码维护造成较高的成本。

使用场景

人开着车在桥上跑,人可以是男人、女人,车可以是公交车、汽车、三轮车,桥可以是铁桥、木桥、石桥。传统模式的写法就是人继承车,车继承桥,但是由于这三个维度都有多种变化,如果用继承来写,势必会造成类的爆炸。

传统模式与桥接模式示意图

优点

 两种模式的差别显而易见,左边这种会虽然维度的增加或者每个维度变化的增加而已指数倍增长,,而桥接模式实现了解耦,使其互不关联,互不影响,这用成语来说叫做分而治之,每个类只做一件事情,符合设计原则的单一原则,维度的增加与变化的增加不会影响之前的类,符合开闭原则

代码实例

目录结构:

 Bridge.php 抽象桥和实现桥类

setBridge();
        echo "".$this->people->setPeople() . $this->car->setCar() . $this->bridge."";
    }
}


class TieBridge extends Bridge
{
    public function setBridge()
    {
        // TODO: Implement setBridge() method.
        $this->bridge = '在铁桥上跑';
    }
}


class MuBridge extends Bridge
{
    public function setBridge()
    {
        // TODO: Implement setBridge() method.
        $this->bridge = '在木桥上跑';
    }
}


class ShiBridge extends Bridge
{
    public function setBridge()
    {
        // TODO: Implement setBridge() method.
        $this->bridge = '在石桥上跑';
    }
}

Car.php 抽象车和实现车类:

 

People.php 抽象人和实现人类:

 

Client.php 调用

car = new Bus();
$bridge->people = new Women();
$bridge->run();
echo "分割线-------------------------------------------------------------------";
$bridge = new TieBridge();
$bridge->car = new Qiche();
$bridge->people = new Man();
$bridge->run();
echo "分割线-------------------------------------------------------------------";
$bridge = new ShiBridge();
$bridge->car = new Sanlun();
$bridge->people = new Women();
$bridge->run();
运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631021.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号