本篇文章主要介绍PHP桥接模式详解及案例,感兴趣的朋友参考下,希望对大家有所帮助。
桥接模式(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();
输出结果:
青椒肉丝盖浇饭
土豆牛肉盖浇饭
相关推荐:
以上是PHP桥接模式详解及案例的详细内容。更多信息请关注PHP中文网其他相关文章!