23种设计模式-桥接模式


23种设计模式-桥接模式

概念

桥接模式是指将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现。从而降低了抽象和实现这两个可变维度的耦合度

结构

桥接模式包含一下主要角色:

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

实现

/**
 * 软件接口
 * 实现化角色
 */
interface Software
{
    public function work();
}

/**
 * 谷歌浏览器
 * 具体实现化角色
 */
class Google implements Software
{

    public function work()
    {
        echo '谷歌浏览器 ';
    }
}

/**
 * 火狐浏览器
 * 具体实现化角色
 */
class Firefox implements Software
{

    public function work()
    {
        echo '火狐浏览器';
    }
}

/**
 * 抽象化角色
 */
abstract class System
{
    public function __construct(public Software $software)
    {
    }

    abstract public function run();
}

/**
 * Mac系统
 * 扩展抽象化角色
 */
class Mac extends System
{
    public function run()
    {
        echo "mac".$this->software->work();
    }
}

/**
 * Window系统
 * 扩展抽象化角色
 */
class Windows extends System
{
    public function run()
    {
        echo "windows".$this->software->work();
    }
}

$mac = new Mac(new Google());
$mac->run(); // mac 谷歌浏览器

文章作者: 我若为侠
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 我若为侠 !
 上一篇
23种设计模式-外观模式 23种设计模式-外观模式
23种设计模式-外观模式概述外观模式又名门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口。外部程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序
下一篇 
23种设计模式-装饰模式 23种设计模式-装饰模式
23种设计模式-装饰模式概述装饰模式是指在不改变现有对象结构的情况下,动态的给该对象增加一些职责(即增加其额外功能)的模式 结构装饰模式分为以下角色: 抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象 具体
  目录