国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP設(shè)計(jì)模式(八)橋接模式(Bridge For PHP)

K_B_Z / 2362人閱讀

摘要:橋接設(shè)計(jì)模式橋接模式將兩個(gè)原本不相關(guān)的類結(jié)合在一起,然后利用兩個(gè)類中的方法和屬性,輸出一份新的結(jié)果。模擬企業(yè)分組發(fā)送短信需求公司現(xiàn)在需要按分組臨時(shí)工正式工管理層等以多種形式微博等給員工發(fā)送通知。

橋接設(shè)計(jì)模式

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

案例 模擬毛筆

需求:現(xiàn)在需要準(zhǔn)備三種粗細(xì)(大中小),并且有五種顏色的比

如果使用蠟筆,我們需要準(zhǔn)備3*5=15支蠟筆,也就是說必須準(zhǔn)備15個(gè)具體的蠟筆類。而如果使用毛筆的話,只需要3種型號的毛筆,外加5個(gè)顏料盒,用3+5=8個(gè)類就可以實(shí)現(xiàn)15支蠟筆的功能。

實(shí)際上,蠟筆和毛筆的關(guān)鍵一個(gè)區(qū)別就在于筆和顏色是否能夠分離。即將抽象化(Abstraction)與實(shí)現(xiàn)化(Implementation)脫耦,使得二者可以獨(dú)立地變化"。關(guān)鍵就在于能否脫耦。蠟筆由于無法將筆與顏色分離,造成筆與顏色兩個(gè)自由度無法多帶帶變化,使得只有創(chuàng)建15種對象才能完成任務(wù)。而毛筆與顏料能夠很好的脫耦(比和顏色是分開的),抽象層面的概念是:"毛筆用顏料作畫",每個(gè)參與者(毛筆與顏料)都可以在自己的自由度上隨意轉(zhuǎn)換。

Bridge模式將繼承關(guān)系轉(zhuǎn)換為組合關(guān)系,從而降低了系統(tǒng)間的耦合,減少了代碼編寫量。

模擬企業(yè)分組發(fā)送短信

需求:公司現(xiàn)在需要按分組(臨時(shí)工、正式工、管理層等)以多種形式(QQ、Email、微博等)給員工發(fā)送通知。

適用性

類的抽象以及它的實(shí)現(xiàn)都應(yīng)該可以通過生成子類的方法加以擴(kuò)充。通過使用Bridge模式對不同的抽象接口和實(shí)現(xiàn)部分進(jìn)行組合,并分別對它們進(jìn)行擴(kuò)充。

不希望在抽象和它的實(shí)現(xiàn)部分之間有一個(gè)固定的綁定關(guān)系。

一個(gè)構(gòu)件有多于一個(gè)的抽象化角色和實(shí)現(xiàn)化角色,系統(tǒng)需要它們之間進(jìn)行動態(tài)耦合。

效果

Bridge模式使用“對象間的組合關(guān)系”解耦了抽象和實(shí)現(xiàn)之間固有的綁定關(guān)系,使得抽象和實(shí)現(xiàn)可以沿著各自的維度來變化。

所謂抽象和實(shí)現(xiàn)沿著各自維度的變化,即“子類化”它們,得到各個(gè)子類之后,便可以任意它們,從而獲得不同員工組和不同信息發(fā)送模式。

Bridge模式的應(yīng)用一般在“兩個(gè)非常強(qiáng)的變化維度”,有時(shí)候即使有兩個(gè)變化的維度,但是某個(gè)方向的變化維度并不劇烈——換言之兩個(gè)變化不會導(dǎo)致縱橫交錯(cuò)的結(jié)果,并不一定要使用Bridge模式。

實(shí)現(xiàn) 員工分組
abstract class Staff
{
    abstract public function staffData();
}

class CommonStaff extends Staff
{
    public function staffData()
    {
        return "小名,小紅,小黑";
    }
}

class VipStaff extends Staff
{
    public function staffData()
    {
        return "小星、小龍";
    }
}
發(fā)送形式
// 抽象父類
abstract class SendType
{
    abstract public function send($to, $content);
}

class QQSend extends SendType
{
    public function __construct()
    {
        // 與QQ接口連接方式
    }

    public function send($to, $content)
    {
        return $content. "(To ". $to . " From QQ)
"; } }
class SendInfo
{
    protected $_level;
    protected $_method;

    public function __construct($level, $method)
    {
        //  這里可以使用單例控制資源的消耗
        $this->_level = $level;
        $this->_method = $method;
    }

    public function sending($content)
    {
        $staffArr = $this->_level->staffData();
        $result = $this->_method->send($staffArr, $content);
        echo $result;
    }
}
客戶端調(diào)用
$info = new SendInfo(new VipStaff(), new QQSend());
$info->sending( "回家吃飯");

$info = new SendInfo(new CommonStaff(), new QQSend());
$info->sending( "繼續(xù)上班");
輸出結(jié)果
回家吃飯(To 小星、小龍 From QQ)
繼續(xù)上班(To 小名,小紅,小黑 From QQ)
總結(jié)
從上面可以看出,如果增加分組或者是發(fā)送信息的類型,都可以直接創(chuàng)建一個(gè)類,來拓展,十分方便。

但是Bridge模式雖然是一個(gè)非常有用的模式,也非常復(fù)雜,它很好的符合了開放-封閉原則和優(yōu)先使用對象,而不是繼承這兩個(gè)面向?qū)ο笤瓌t。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/31693.html

相關(guān)文章

  • PHP基礎(chǔ)

    摘要:分別為適配器模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。設(shè)計(jì)模式五適配器模式適配器模式將某個(gè)對象的接生成器和協(xié)程的實(shí)現(xiàn)在這篇文章中,作者針對那些比較難以理解的概念,以一個(gè)更為通俗的方式去講明白。。 PHP 源碼注解 PHP 的詳細(xì)源碼注解 PHP 字符串操作整理 一些有關(guān)字符串的常用操作。 Redis 常見七種使用場景 (PHP 實(shí)戰(zhàn)) 這篇文章主要介紹利用 R...

    HtmlCssJs 評論0 收藏0
  • PHP 設(shè)計(jì)模式概述

    摘要:創(chuàng)建型模式主要有以下五種簡單工廠模式和工廠方法模式抽象工廠模式單例模式建造者模式原型模式在設(shè)計(jì)模式一書中將工廠模式分為兩類工廠方法模式與抽象工廠模式。 一、 設(shè)計(jì)模式(Design pattern)是什么 設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉、經(jīng)過分類編目的代碼設(shè)計(jì)的經(jīng)驗(yàn)總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 二、 為什么會有設(shè)計(jì)模式 在軟件開發(fā)過...

    IntMain 評論0 收藏0
  • 聽飛狐聊JavaScript設(shè)計(jì)模式系列11

    摘要:橋接模式之特權(quán)函數(shù)特權(quán)函數(shù),用一些具有特權(quán)的方法作為橋梁以便訪問私有空間,可以回憶一下之前的系列。連續(xù)自然數(shù)分組,計(jì)算最多組的個(gè)數(shù)將至這個(gè)連續(xù)自然數(shù)分成組使每組相加的值相等。個(gè)數(shù)組中數(shù)字最多的一組有個(gè)此時(shí)的和為。 本回內(nèi)容介紹 上一回,聊了適配器模式,圖片預(yù)加載,介一回,聊橋接模式(Bridge),跟之前一樣,難度比較小,橋接模式將抽象部分與它的實(shí)現(xiàn)部分分離,通過橋接模式聯(lián)系彼此,同時(shí)...

    wanglu1209 評論0 收藏0
  • PHP設(shè)計(jì)模式(十):適配器模式

    摘要:原文地址設(shè)計(jì)模式十適配器模式在設(shè)計(jì)模式七設(shè)計(jì)模式分類中我們提到過結(jié)構(gòu)設(shè)計(jì)模式,結(jié)構(gòu)設(shè)計(jì)模式專注于設(shè)計(jì)對象和實(shí)例的構(gòu)建組合過程。適配器模式在不修改現(xiàn)有代碼的基礎(chǔ)上,保留了架構(gòu)。 原文地址:PHP設(shè)計(jì)模式(十):適配器模式 Introduction 在PHP設(shè)計(jì)模式(七):設(shè)計(jì)模式分類中我們提到過結(jié)構(gòu)設(shè)計(jì)模式(Structural patterns),結(jié)構(gòu)設(shè)計(jì)模式專注于設(shè)計(jì)對象(Objec...

    paney129 評論0 收藏0
  • 一起學(xué)設(shè)計(jì)模式 - 橋接模式

    摘要:橋接模式屬于結(jié)構(gòu)型模式的一種,用于把抽象化與實(shí)現(xiàn)化解耦,使得二者可以獨(dú)立變化,它通過提供抽象化和實(shí)現(xiàn)化之間的橋接結(jié)構(gòu),來實(shí)現(xiàn)二者的解耦。相關(guān)模式裝飾模式與橋接模式在一定程度上都是為了減少子類的數(shù)目,避免出現(xiàn)復(fù)雜的繼承關(guān)系。 橋接模式(Brideg Pattern)屬于結(jié)構(gòu)型模式的一種,用于把抽象化與實(shí)現(xiàn)化解耦,使得二者可以獨(dú)立變化,它通過提供抽象化和實(shí)現(xiàn)化之間的橋接結(jié)構(gòu),來實(shí)現(xiàn)二者的解...

    tinysun1234 評論0 收藏0

發(fā)表評論

0條評論

K_B_Z

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<