這篇文章主要介紹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中文網其他相關文章!