欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
設計模式學(xué)習筆記(八)——Bridge橋接模式

       Bridge橋接模式是一種結構型模式,它主要應對的是:由于類(lèi)型的固有羅輯,使得類(lèi)型具有兩個(gè)或兩個(gè)以上的緯度變化。也就是要求抽象不應依賴(lài)于實(shí)現細節,實(shí)現細節應依賴(lài)于抽象。

       《設計模式》中說(shuō)到將抽象部分與實(shí)現部分分離,使他們可以獨立的變化。

       舉個(gè)例子更清楚些,好像我們平時(shí)玩的游戲中有PS版的,但是不是大家都有PS。這時(shí)我們等一段時(shí)間,一般會(huì )出PC版的或其他版本。由于支持游戲的平臺不一樣,但是如果我們編寫(xiě)的游戲程序為了適應另一種平臺就要全部重新編寫(xiě)的話(huà)豈不是很麻煩。再加上游戲本身的變動(dòng),一句眾人皆知的話(huà):“死定了。

       現在我們來(lái)看看Bridge橋接模式,看看它是如何解決類(lèi)似問(wèn)題的,首先我們看看Bridge模式的結構。


       實(shí)際上,我們要做到的是把變化的部分提出,對其抽象,使變化獨立。那我們如何做呢?通過(guò)組合的方式將變化獨立出去。將一個(gè)事物中的多個(gè)緯度變化分離。

       下面舉一個(gè)場(chǎng)景來(lái)理解一下,還是用汽車(chē)舉例,我現在要一輛車(chē)(BMWBORA)在路(WaterRoadCement)上跑?,F在有兩個(gè)緯度的變化點(diǎn):汽車(chē)和路。也就是上圖中的AbstractChangePoint1AbstractChangePoint2。AbstractChangePoint1中包含有AbstractChangePoint2對象成員。。代碼實(shí)現如下:

       abstract class AbstractCar

    {

        public AbstractRoad road;

 

        public AbstractCar(AbstractRoad road)

        {

            this.road = road;

        }

 

        public abstract string Run();

        public abstract string Stop();

    }

 

    abstract class AbstractRoad

    {

        public abstract string GetRoadType();

}

以汽車(chē)為變化中心,用組裝的方式將兩個(gè)變化點(diǎn)結合起來(lái)。使路的變化和汽車(chē)隔離。下面來(lái)編寫(xiě)路的實(shí)現。

class WaterRoad:AbstractRoad

    {

        public override string GetRoadType()

        {

            return "It is WaterRoad";

        }

 }

class CementRoad:AbstractRoad

    {

        public override string GetRoadType()

        {

            return "It is Cement";

        }

}

然后再來(lái)編寫(xiě)汽車(chē)的實(shí)現

class BMWCar:AbstractCar

    {

        public BMWCar(AbstractRoad road)

            : base(road)

        {

          

        }

 

        public override string Run()

        {

            return "BMW is running";

        }

 

        public override string Stop()

        {

            return "BMW is stopped";

        }

 }

class BROACar:AbstractCar

    {

        public BROACar(AbstractRoad road)

            : base(road)

        {

           

        }

 

        public override string Run()

        {

            return "BROA is running";

        }

 

        public override string Stop()

        {

            return "BROA is stopped";

        }

  }

然后我們在客戶(hù)代碼中調用這些類(lèi),首先,我想要這個(gè)場(chǎng)景是BMWWaterRoad上跑,客戶(hù)端代碼如下:

static void Main(string[] args)

        {

            AbstractCar car = new BMWCar(new WaterRoad());

            Console.WriteLine(car.road.GetRoadType());

            Console.WriteLine(car.Run());

            Console.WriteLine(car.Stop());

            Console.Read();

        }

實(shí)現結果如下:

It is WaterRoad

BMW is running

BMW is stopped

如果我現在要一輛BORACement上跑,我們只要稍微修改一下car的實(shí)例化就可以,代碼如下:

static void Main(string[] args)

        {

            AbstractCar car = new BROACar(new CementRoad());

            Console.WriteLine(car.road.GetRoadType());

            Console.WriteLine(car.Run());

            Console.WriteLine(car.Stop());

            Console.Read();

     }

實(shí)現結果如下:

It is Cement

BROA is running

BROA is stopped

       最后我們再來(lái)說(shuō)說(shuō)Bridge模式的要點(diǎn):

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

2、所謂抽象和實(shí)現沿著(zhù)各自緯度的變化,即“子類(lèi)化”它們,得到各個(gè)子類(lèi)之后,便可以任意組合它們。

3、Bridge模式有時(shí)候類(lèi)似于多繼承方案,但是多繼承方案往往違背單一職責原則(即一個(gè)類(lèi)只有一個(gè)變化的原因),復用性比較差。Bridge模式是比多繼承方案更好的解決方法。

4、Bridge模式的應用一般在“兩個(gè)非常強的變化緯度”,有時(shí)候即使有兩個(gè)變化的緯度,但是某個(gè)方向的變化緯度并不劇烈——換言之兩個(gè)變化不會(huì )導致縱橫交錯的結果,并不一定要使用Bridge模式。

posted on 2006-05-31 09:02 KiddLee 閱讀(1516) 評論(10)  編輯 收藏 引用 網(wǎng)摘 所屬分類(lèi): 設計模式

FeedBack:
# 
中午和TerryList一起吃飯,他提示我抽象類(lèi)應用斜體字。哈哈,不好意思,剛開(kāi)始用UML圖表示,在畫(huà)的時(shí)候有很多不注意的地方,還望大家多多指教。  回復  更多評論
  
# re: 設計模式學(xué)習筆記(八)——Bridge橋接模式 2006-05-31 16:14 TerryLee
@kid_li

大哥,我叫TerryLee,不是TerryList:-)  回復  更多評論
  
# re: 設計模式學(xué)習筆記(八)——Bridge橋接模式 2006-05-31 17:40 kid_li
@TerryLee
不好意思,不小心寫(xiě)錯了  回復  更多評論
  
# re: 設計模式學(xué)習筆記(八)——Bridge橋接模式 2006-06-01 11:31 公木子
花了一個(gè)上午的時(shí)間全部看完了你寫(xiě)的八種模式設計,寫(xiě)得不錯。如果你能把23種都寫(xiě)完的話(huà),希望你能寫(xiě)個(gè)總結就想下面的一樣,很容易混淆的
Singleton單件模式解決的問(wèn)題是:實(shí)體對象個(gè)數問(wèn)題(這個(gè)現在還不太容易混)

AbstractFactory抽象工廠(chǎng)模式解決的問(wèn)題是:“一系列互相依賴(lài)的對象”的創(chuàng )建工作

Builder生成器模式解決的問(wèn)題是:“一些復雜對象”的創(chuàng )建工作,子對象變化較頻繁,對算法相對穩定

FactoryMethor工廠(chǎng)方法模式解決的問(wèn)題是:某個(gè)對象的創(chuàng )建工作

  回復  更多評論
  
# re: 設計模式學(xué)習筆記(八)——Bridge橋接模式 2006-06-01 11:31 公木子
花了一個(gè)上午的時(shí)間全部看完了你寫(xiě)的八種模式設計,寫(xiě)得不錯。如果你能把23種都寫(xiě)完的話(huà),希望你能寫(xiě)個(gè)總結就想下面的一樣,很容易混淆的
Singleton單件模式解決的問(wèn)題是:實(shí)體對象個(gè)數問(wèn)題(這個(gè)現在還不太容易混)

AbstractFactory抽象工廠(chǎng)模式解決的問(wèn)題是:“一系列互相依賴(lài)的對象”的創(chuàng )建工作

Builder生成器模式解決的問(wèn)題是:“一些復雜對象”的創(chuàng )建工作,子對象變化較頻繁,對算法相對穩定

FactoryMethor工廠(chǎng)方法模式解決的問(wèn)題是:某個(gè)對象的創(chuàng )建工作

  回復  更多評論
  
# re: 設計模式學(xué)習筆記(八)——Bridge橋接模式 2006-06-01 11:31 公木子
花了一個(gè)上午的時(shí)間全部看完了你寫(xiě)的八種模式設計,寫(xiě)得不錯。如果你能把23種都寫(xiě)完的話(huà),希望你能寫(xiě)個(gè)總結就想下面的一樣,很容易混淆的
Singleton單件模式解決的問(wèn)題是:實(shí)體對象個(gè)數問(wèn)題(這個(gè)現在還不太容易混)

AbstractFactory抽象工廠(chǎng)模式解決的問(wèn)題是:“一系列互相依賴(lài)的對象”的創(chuàng )建工作

Builder生成器模式解決的問(wèn)題是:“一些復雜對象”的創(chuàng )建工作,子對象變化較頻繁,對算法相對穩定

FactoryMethor工廠(chǎng)方法模式解決的問(wèn)題是:某個(gè)對象的創(chuàng )建工作

  回復  更多評論
  
# re: 設計模式學(xué)習筆記(八)——Bridge橋接模式 2006-06-01 11:31 公木子
花了一個(gè)上午的時(shí)間全部看完了你寫(xiě)的八種模式設計,寫(xiě)得不錯。如果你能把23種都寫(xiě)完的話(huà),希望你能寫(xiě)個(gè)總結就想下面的一樣,很容易混淆的
Singleton單件模式解決的問(wèn)題是:實(shí)體對象個(gè)數問(wèn)題(這個(gè)現在還不太容易混)

AbstractFactory抽象工廠(chǎng)模式解決的問(wèn)題是:“一系列互相依賴(lài)的對象”的創(chuàng )建工作

Builder生成器模式解決的問(wèn)題是:“一些復雜對象”的創(chuàng )建工作,子對象變化較頻繁,對算法相對穩定

FactoryMethor工廠(chǎng)方法模式解決的問(wèn)題是:某個(gè)對象的創(chuàng )建工作

  回復  更多評論
  
# re: 設計模式學(xué)習筆記(八)——Bridge橋接模式 2006-06-01 11:54 kid_li
@公木子
哈哈,謝謝你的支持,沒(méi)問(wèn)題,我會(huì )的  回復  更多評論
  
# re: 設計模式學(xué)習筆記(八)——Bridge橋接模式 2006-07-11 15:34 大雁
寫(xiě)得不錯,例子也好,比板橋里人寫(xiě)得好。最后的總結很經(jīng)典,支持。只是AbstractChangPoint2與AbstractChangPoint1之間是不是應該用聚集的符號?另外,ClientApp放在這沒(méi)必要吧。僅供參考,呵呵,我寫(xiě)了這個(gè)例子的UML圖,可惜貼不上...  回復  更多評論
  
# re: 設計模式學(xué)習筆記(八)——Bridge橋接模式 2006-07-11 20:34 kid_li
@大雁
我不是很會(huì )畫(huà)UML圖,可不可以畫(huà)一張用Email(kid_li@126.com)發(fā)給我給我學(xué)習一下。謝謝了  回復  更多評論
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
設計模式-----橋接模式(Bridge Pattern)
C#面向對象設計模式縱橫談:Factory Method 工廠(chǎng)方法模式
[Head First設計模式]山西面館中的設計模式——裝飾者模式
C#設計模式學(xué)習筆記:(12)代理模式
設計模式之享元模式
【新提醒】【設計模式深入學(xué)習
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久