首頁 後端開發 php教程 PHP设计模式--桥接模式

PHP设计模式--桥接模式

Jun 23, 2016 pm 01:35 PM

声明:本系列博客参考资料《大话设计模式》,作者程杰。


       桥接模式:在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?这就要使用桥接模式??将抽象部分与它的实现部分分离,使他们可以独立地变化。


          UML类图:

     

   

      角色介绍:

     

       抽象化(AbstractRoad)角色:抽象化给出的定义,并保存一个对实现化对象的引用。

       修正抽象化(SpeedWay)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。

       实现化(AbstractCar)角色:这个角色给出实现化角色的接口,但不给出具体的实现。必须指出的是,这个接口不一定和抽象化角色的接口定义相同,实际上,这两个接口可以非常不一样。

       具体实现化(Bus)角色:这个角色给出实现化角色接口的具体实现。

   

       代码体现:

      

<?php /** * Created by PhpStorm. * User: Jiang * Date: 2015/4/26 * Time: 16:39 *//**抽象化角色            抽象路 * Class AbstractRoad */abstract class AbstractRoad{    public $icar;    abstract function Run();}/**具体的             高速公路 * Class speedRoad */class SpeedRoad extends AbstractRoad{    function Run()    {        $this->icar-&gt;Run();        echo ":在高速公路上。";    }}/**乡村街道 * Class Street */class Street extends AbstractRoad{    function Run()    {        $this-&gt;icar-&gt;Run();        echo ":在乡村街道上。";    }}/**抽象汽车接口 * Interface ICar */interface ICar{    function Run();}/**吉普车 * Class Jeep */class Jeep implements ICar{    function Run()    {        echo "吉普车跑";    }}/**小汽车 * Class Car */class Car implements ICar{    function Run()    {        echo "小汽车跑";    }}
登入後複製

         测试代码:

       

/------------------------桥接模式测试代码------------------require_once "./Bridge/Bridge.php";$speedRoad=new SpeedRoad();$speedRoad-&gt;icar=new Car();$speedRoad-&gt;Run();echo "<hr>";$street=new Street();$street-&gt;icar=new Jeep();$street-&gt;Run();
登入後複製

       适用场景:

     

       1.如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。

       2.设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。

       3.一个构件有多于一个的抽象化角色和实现化角色,系统需要它们之间进行动态耦合。

       4.虽然在系统中使用继承是没有问题的,但是由于抽象化角色和具体化角色需要独立变化,设计要求需要独立管理这两者。


      PHP面向对象设计模式



本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

11個最佳PHP URL縮短腳本(免費和高級) 11個最佳PHP URL縮短腳本(免費和高級) Mar 03, 2025 am 10:49 AM

11個最佳PHP URL縮短腳本(免費和高級)

在Laravel中使用Flash會話數據 在Laravel中使用Flash會話數據 Mar 12, 2025 pm 05:08 PM

在Laravel中使用Flash會話數據

Instagram API簡介 Instagram API簡介 Mar 02, 2025 am 09:32 AM

Instagram API簡介

簡化的HTTP響應在Laravel測試中模擬了 簡化的HTTP響應在Laravel測試中模擬了 Mar 12, 2025 pm 05:09 PM

簡化的HTTP響應在Laravel測試中模擬了

構建具有Laravel後端的React應用程序:第2部分,React 構建具有Laravel後端的React應用程序:第2部分,React Mar 04, 2025 am 09:33 AM

構建具有Laravel後端的React應用程序:第2部分,React

php中的捲曲:如何在REST API中使用PHP捲曲擴展 php中的捲曲:如何在REST API中使用PHP捲曲擴展 Mar 14, 2025 am 11:42 AM

php中的捲曲:如何在REST API中使用PHP捲曲擴展

在Codecanyon上的12個最佳PHP聊天腳本 在Codecanyon上的12個最佳PHP聊天腳本 Mar 13, 2025 pm 12:08 PM

在Codecanyon上的12個最佳PHP聊天腳本

Laravel中的通知 Laravel中的通知 Mar 04, 2025 am 09:22 AM

Laravel中的通知

See all articles