PHP开发PHP经验分享

编程中的设计模式之桥接模式

2020-08-10  本文已影响0人  phpworkerman
定义

桥接模式(Bridge Pattern)使抽象层和实现层解耦,使二者可以独立变化,属于结构型模式。

代码实例

现有文件IDE Phpstorm 和 Notepad ,每一种文件类和IDE的组合都是一种维度,比如 Phpstorm 和 php, Phpstorm 和 JS,IDE 可以扩展,要处理的自定义文件类型也会很多,如果采用抽象层定义每一种维度,无疑是工作量巨大的,并且业务发展变化时,扩展和修改是很麻烦的的,我们将 IDE 的实现和文件类的实现单独分开实现,在具体使用时根据业务调用不同的维度组合。

<?php
interface AdvancedIde
{
    public function handleFile($file);
}

class Phpstorm implements AdvancedIde
{
    public function handleFile($file)
    {
        echo '通过phpstorm处理'. $file .'文件';
    }
}

class Notepad implements AdvancedIde
{
    public function handleFile($file)
    {
        echo '通过notepad处理'. $file .'文件';
    }
}

abstract class File
{
    public $ide;
    protected $file;

    public function chooseIde($ide)
    {
        $this->ide = new $ide;
        return $this->ide;
    }

    abstract public function handle($ide,$file);
}

class CustomFile extends File
{
    public function handle($ide,$file)
    {
        $ideModel = $this->chooseIde($ide);
        $ideModel->handleFile($file);
    }
}

$bridgeDemo = new CustomFile();
$bridgeDemo->handle('Phpstorm','php');
$bridgeDemo->handle('Phpstorm','js');

$bridgeDemo->handle('Notepad','php');
$bridgeDemo->handle('Notepad','js');
总结

桥接模式实现了抽象和实现的解耦,可以很方便的构建对象的不同维度,桥接对系统扩展非常友好,但架构时需要在抽象层进行设计,增加了系统的复杂度。

上一篇 下一篇

猜你喜欢

热点阅读