濮阳杆衣贸易有限公司

主頁 > 知識庫 > php橋接模式的實例用法及代碼分析

php橋接模式的實例用法及代碼分析

熱門標簽:凱立德地鐵站地圖標注 溫州外呼系統(tǒng)招商 400電話個人能不能辦理 上海400客服電話怎么申請 天津電銷外呼系統(tǒng)違法嗎 滄州電銷外呼系統(tǒng)價格 手機外呼系統(tǒng)什么原理 銀行信貸電話機器人 合肥ai電銷機器人費用

說明

1、將兩個原本不相關(guān)的類結(jié)合在一起,然后利用兩個類中的方法和屬性,輸出一份新的結(jié)果。

2、結(jié)構(gòu)分為Abstraction抽象類、RefindAbstraction被提煉的抽象類、Implementor實現(xiàn)類、ConcreteImplementor具體實現(xiàn)類 、Client客戶端代碼。

實例

/**
 * 顏色抽象類
 * Class Colour
 */
abstract class Colour
{
    /**
     * @return mixed
     */
    abstract public function run();
}
 
 
/**
 * 黑色
 * Class Black
 */
class Black extends Colour
{
    public function run()
    {
        // TODO: Implement run() method.
        return '黑色';
    }
}
 
 
/**
 * 白色
 * Class White
 */
class White extends Colour
{
    public function run()
    {
        // TODO: Implement run() method.
        return '白色';
    }
}
 
 
/**
 * 紅色
 * Class Red
 */
class Red extends Colour
{
    public function run()
    {
        // TODO: Implement run() method.
        return '紅色';
    }
}
 
 
/**
 * 形狀抽象類
 * Class Shape
 */
abstract class Shape
{
    /**
     * 顏色
     * @var Colour
     */
    protected $colour;
 
 
    /**
     * Shape constructor.
     * @param Colour $colour
     */
    public function __construct(Colour $colour)
    {
        $this->colour = $colour;
    }
 
 
    /**
     * @return mixed
     */
    abstract public function operation();
}
 
 
/**
 * 圓形
 * Class Round
 */
class Round extends Shape
{
    /**
     * @return mixed|void
     */
    public function operation()
    {
        // TODO: Implement operation() method.
        echo $this->colour->run() . '圓形br>';
    }
}
 
 
/**
 * 長方形
 * Class Rectangle
 */
class Rectangle extends Shape
{
    /**
     * @return mixed|void
     */
    public function operation()
    {
        // TODO: Implement operation() method.
        echo $this->colour->run() . '長方形br>';
    }
}
 
 
/**
 * 正方形
 * Class Square
 */
class Square extends Shape
{
    /**
     * @return mixed|void
     */
    public function operation()
    {
        // TODO: Implement operation() method.
        echo $this->colour->run() . '正方形br>';
    }
}
 
 
// 客戶端代碼
// 白色圓形
$whiteRound = new Round(new White());
$whiteRound->operation();
 
// 黑色正方形
$blackSquare = new Square(new Black());
$blackSquare->operation();
 
// 紅色長方形
$redRectangle = new Rectangle(new Red());
$redRectangle->operation();

運行結(jié)果

白色圓形
黑色正方形
紅色長方形

內(nèi)容擴展:

橋接模式

橋連模式:將抽象部分與實現(xiàn)部分分離,使它們都可以獨立的變化。它是一種結(jié)構(gòu)性模式,又稱柄體(Handle and body)模式或者接口(Interface)模式。 當一個抽象可能有多個實現(xiàn)時,通常用繼承來協(xié)調(diào)他們。抽象類的定義對該抽象的接口。而具體的子類則用不同的方式加以實現(xiàn),但是此方法有時不夠靈活。繼承機制將抽象部分與他的視線部分固定在一起,使得難以對抽象部分和實現(xiàn)部分獨立地進行修改、擴充和充用。

理解橋接模式,重點需要理解如何將抽象化(Abstraction)與實現(xiàn)化(Implementation)脫耦,使得二者可以獨立地變化。

•抽象化:抽象化就是忽略一些信息,把不同的實體當作同樣的實體對待。在面向?qū)ο笾?,將對象的共同性質(zhì)抽取出來形成類的過程即為抽象化的過程。

•實現(xiàn)化:針對抽象化給出的具體實現(xiàn),就是實現(xiàn)化,抽象化與實現(xiàn)化是一對互逆的概念,實現(xiàn)化產(chǎn)生的對象比抽象化更具體,是對抽象化事物的進一步具體化的產(chǎn)物。

•脫耦:脫耦就是將抽象化和實現(xiàn)化之間的耦合解脫開,或者說是將它們之間的強關(guān)聯(lián)改換成弱關(guān)聯(lián),將兩個角色之間的繼承關(guān)系改為關(guān)聯(lián)關(guān)系。橋接模式中的所謂脫耦,就是指在一個軟件系統(tǒng)的抽象化和實現(xiàn)化之間使用關(guān)聯(lián)關(guān)系(組合或者聚合關(guān)系)而不是繼承關(guān)系,從而使兩者可以相對獨立地變化,這就是橋接模式的用意。

適用性

1). 你不希望在抽象和他的實現(xiàn)部分之間有一個固定的邦定關(guān)系,如在程序的運行時刻實現(xiàn)部分應(yīng)該可以被選擇或者切換。

2). 類的抽象以及他的視像都可以通過生成子類的方法加以擴充。這時bridge模式使你可以對不同的抽象接口

和實現(xiàn)部分進行組合,并對他們進行擴充。

3). 對一個抽象的實現(xiàn)部分的修改應(yīng)該對客戶不產(chǎn)生影響,即客戶的代碼不需要重新編譯。

4). 你想對客戶完全隱藏抽象的實現(xiàn)部分。

5). 你想在多個實現(xiàn)間 共享實現(xiàn),但同時要求客戶并不知道這一點。

到此這篇關(guān)于php橋接模式的實例用法及代碼分析的文章就介紹到這了,更多相關(guān)php橋接模式是什么內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • php橋接模式應(yīng)用案例分析
  • php設(shè)計模式 Bridge (橋接模式)

標簽:白城 金華 七臺河 酒泉 赤峰 怒江 洛陽 溫州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《php橋接模式的實例用法及代碼分析》,本文關(guān)鍵詞  php,橋接,模式,的,實例,用法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php橋接模式的實例用法及代碼分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于php橋接模式的實例用法及代碼分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    昌平区| 墨竹工卡县| 元江| 泉州市| 石阡县| 类乌齐县| 东乡| 桦甸市| 尚义县| 塘沽区| 安陆市| 襄樊市| 许昌县| 集安市| 江达县| 万州区| 南投市| 揭阳市| 武功县| 金湖县| 高唐县| 兴宁市| 徐汇区| 湖北省| 衡阳市| 广安市| 白水县| 阿拉善左旗| 监利县| 苍山县| 辽中县| 普兰店市| 门头沟区| 时尚| 怀柔区| 临沧市| 驻马店市| 宜黄县| 鲁甸县| 凉城县| 来安县|