初识PHP设计模式--桥接模式

本文介绍了一种对象结构型设计模式——桥接模式,通过实例解释如何将抽象部分与实现部分分离,使两者能够独立变化。以盖浇饭为例,展示了不同主食与配料的灵活组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 桥接模式(Bridge)是一种对象结构型模式,将抽象部分与实现部分分离,使它们都可以独立地变化。
 总结来说就是在多维度上,各自变化互不影响,通过桥接建立一定关联,进行动态组合, 这种模式的灵活性比较高。

 就类似我们去吃盖浇饭里面配各种菜一样,例如青椒肉丝盖浇饭,土豆牛肉盖浇饭。

 主食:饭,面。
 辅食:青椒肉丝,土豆牛肉。

 主食,辅食两个不同的维度,各自可以继续添加种类,例如:辅食可以再添加一个韭菜鸡蛋等,又可以相互组合。

 记录代码如下:

/**      
 * Created by Sublime.      
 * User: Ryan      
 * Date: 2018/1/22      
 * File:Bridge.php      
 */      
  
/** 抽象一个主食类     
 *  abstract Food         
 */  
abstract Class Food
{
    public $dishes; // 一开始会赋值对象
    abstract function MakeFood();
}

/** 盖浇饭类 继承主食类    
 *  Rice         
 */  
Class Rice extends Food
{
    function MakeFood()
    {
        $this->dishes->MakeDishes();
        echo "盖浇饭<br/>";
    }
}

/** 盖浇面类 继承主食类    
 *  Noodle         
 */
Class Noodle extends Food
{
    function MakeFood()
    {
        $this->dishes->MakeDishes();
        echo "盖浇面<br/>";
    }
}


/** 菜肴接口    
 *  interface Dishes         
 */
interface Dishes
{
    function MakeDishes();
}

/** 青椒肉丝类 继承菜肴接口  
 *  QJRS         
 */
Class QJRS implements Dishes
{
   function MakeDishes(){
       echo "青椒肉丝";
   }    
}

/** 土豆牛肉类 继承菜肴接口  
 *  TDNR         
 */
Class TDNR implements Dishes
{
   function MakeDishes(){
       echo "土豆牛肉";
   }    
}

<?php

// 桥接模式 index.php
header("Content-Type:text/html;charset=utf-8");
require_once "Bridge.php";  

// 要一份盖浇饭
$rice = new Rice();

// 浇头要 青椒肉丝
$rice->dishes = new QJRS();

// 上菜
$rice->MakeFood();

// 同样的要一份盖浇饭
$rice = new Rice();

// 这次改了浇头要 土豆牛肉
$rice->dishes = new TDNR();

// 上菜
$rice->MakeFood();

输出结果:

青椒肉丝盖浇饭
土豆牛肉盖浇饭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值