亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

如何讓孩子愛上設計模式 ——10.橋接模式(Bridge Pattern)

2019-11-09 18:10:21
字體:
來源:轉載
供稿:網友

如何讓孩子愛上設計模式 ——10.橋接模式(Bridge Pattern)

標簽: 設計模式初涉


我有故事,你有酒嗎?這年頭寫個技術文不講個故事都不行,行,我講; 還有發現很多的技術博文都開始有喜歡往文中插入幾個表情的趨勢了, 但是你真的插的姿勢對了嗎?這種事情不是隨便插的,來來來,給你 見識下如何在適當的場景插入適當的表情以讓讀者感覺到易可賽艇, 本文以講故事插表情為主,講述橋接模式為輔,多圖預警, 簡書上排版可能有些問題,最佳排版可見: https://www.zybuluo.com/coder-pig/note/643756 我就喜歡這樣光明正大的開著我的托馬斯小火車,污污污


場景引入

      在之前的章節中,我們都知道小豬開家奶茶店,憑借著獨特 的奶茶制作工藝,每天都吸引了一堆吃貨在門口排隊。每天基本 都是坐著收錢,但是喜歡折騰的小豬并不只滿足于賣奶茶和小吃, 他一直在尋求著新的盈利點。一天沒事,他打開了“丑團外賣”, 看著別人做餐飲的怎么玩,咦,有加奶茶店竟然做起了賣煲仔 飯的副業,打著“新品煲仔飯新鮮出爐,買飯送飲料”的廣告口號, 再看下銷量,還不賴,飯 + 飲料 + 小吃,能再從飯里面撈一筆, 但是做什么飯好呢?思前想后還是做技術水平最低的扒類,去市場 買好扒,買些醬料腌制下,然后丟鐵板上一煎,然后配點飯或者 意粉,成本也就10來塊,妥妥地賣30塊一份,23333

嘿嘿,打算賣這幾樣東西:

牛扒豬扒牛扒飯豬扒飯牛扒意粉豬扒意粉

接著按照套路來,我們擼下代碼,不用Bridge模式的一般玩法:

先建立一個扒的父類:Steak.java

接著繼承這個扒類編寫牛扒豬扒子類

再接著繼承豬扒和牛扒,寫出四個子類

準備就開賣了,寫一個餐館類來賣扒:

輸出結果:

可以,老鐵,沒毛病,就這樣開始搞事情了~


問題初現

新品推出,肯定是搞吃扒送飲料的套路,由此吸引了一大波貪小便宜 的吃貨,人多了,要求也多了,吃貨反饋最多的問題是:

沒有雞扒,這不清真!

視顧客為上帝的小豬,肯定是急急腳把雞扒加上:

然后調用下就好,又一次解決了吃貨的需要,小豬感到很愉悅。 雞扒是有了,然后吃貨們又說想吃魚扒,照葫蘆畫瓢又得 繼承,寫三個類,有些繁瑣,小豬開始意識到可能有些問題, 但是因為懶和拖拉,還是默默接受了沒毛病這個設定,然后 沿用原先的套路把魚扒也加上了。


問題又現

     此時的小豬正悠閑的玩著王者農藥,他似乎沒有意思到逐漸 向他靠近的挑戰。店員小B走了過來:

對小豬說: “老板,客人想要羊扒。” 小豬此時正在打團,因為被打斷導致了團滅,有些不悅的說道: “那就加上啊,按照之前的雞扒魚扒套路玩啊,你怎么那么蠢?” 小B一臉尷尬的說道:客人覺得味道太單一,有的想要加番茄汁, 有的想要加黑椒汁…,我不知道該怎么辦”

小豬突然意識到事態的嚴重性了,這得繼承N次,建多少個類??! 需要一個人靜靜,然后把手機遞給了小B,語氣凝重的說到:

這把黃金上鉑金的晉級賽,輸了扣你半個月工資!

然后揚長而去,小B看了看戰績:0:20:5?站在原地一臉懵逼~

     小豬一邊走一邊想,按照原有的套路,加上汁又得 加上N多的類,如果顧客又想加配菜呢,這是要GG啊, 這耦合度太高了,舊套路必須推翻,得想個新的套路!

     走著走著來到一個沒人的地方了,小豬左顧右盼確定 沒人后,悄悄地把自己的手塞到褲襠中,反復翻動,似乎 在尋找著什么,然后掏出了不可描述的長18.4cm的…

欲望知后事如何請聽下回分解

讀者老爺:下回個毛線,快把你這破車飚完!

好的,上回說到,小豬從褲襠里掏出了18.4cm長不可描述的東西, 這個到底是什么呢?為何小豬要找沒人的角落才敢掏出來?

讀者老爺:

此物看上去黑硬粗,離近一看才知道是:

《如何讓孩子愛上設計模式》

色的封面,質書皮,體書名,長18.4cm * 寬13cm 不可描述是因為此書是編程界三十六道絕世功法中的 一本,一但被別人知道了,必然會引起殺身之禍,小豬 小豬雖然已經掌握了其中的二十三式中的前九式,但是 還是沒有自保的能力,所以平日只能藏于褲襠之中, 在沒人的地方才敢拿出來反復研讀。

讀者老爺:

話說回來,小豬翻開《如何讓孩子愛上設計模式》快速翻閱 著能夠解決當前問題的設計模式,當翻到橋接模式的時候, 一段文字映入小豬的眼簾:

在軟件系統中,某些類型由于自身的邏輯,它具有兩個或 多個維度的變化,那么如何應對這種“多維度的變化”? 如何利用面向對象的技術來使得該類型能夠輕松的沿著 多個方向進行變化,而又不引入額外的復雜度?這就要使用Bridge模式。

多維?維度變化?小豬不解,繼續往下看,看到一句心法:

將抽象部分與實現部分分離,使得他們可以獨立地進行變化!

變化的因素都分離出來(抽象類),讓他獨立變化(繼承),然后在程序運行時 動態地將抽象與實現部分組合起來。而多維橋接需要互相持有, 比如這里的扒類持有飯意粉,醬汁類持有扒類!如果再 加上配菜,就加多一個配菜類持有醬汁類!

沒錯,就是這樣,小豬此刻猶如醍醐灌頂,靈魂附體,立馬 飛身趕回店中,已經迫不及待的想用橋接模式來秀一波了。


橋接模式初顯威風

回到店里的小豬就是一頓瘋狂輸出,把變化因素都抽取出來: 先抽配餐類,畢竟這個是可變的,可飯,可意粉,你喜歡還可以加河粉:

繼承配餐類的飯和意粉

再抽扒類,也是可變的,可牛,可豬,可雞,可魚,可茍

牛扒與豬扒

改良后的賣扒套路:

輸出結果:

原先要的效果實現了,再加上雞扒和羊扒又如何:

就是這么簡單,什么魚扒,狗扒隨便來,唰唰唰就加上了, 小豬表示無所畏懼!


橋接模式再顯神威

      正當小豬沾沾自喜的時候,店員小B急沖沖地跑進來喊道: “小豬老板,前幾天要加醬汁的顧客又來鬧事啦!啊!??!??!” 小豬很淡定的說到:“莫方莫方,帶我出去看看,我自能解決!” 剛出店門,小豬就被眼前的景象所驚呆了:

三個跳舞的基佬:

小豬:,走開,我要打死這群基佬

店員小A和小B趕忙拉住小豬:

恢復了一下情緒后,小豬問到:“就是你們三個加醬汁是吧?”

跳舞的基佬:“是的,我們分別要黑椒汁,番茄汁和香草汁,今天 要是不給我們搞,我們就繼續在這里跳舞,只要有空地,哪里都能跳尬舞!

小豬微微一笑,說到:“呵呵,原來是砸場子的,今日倒要給你們看看我的本事!”

跳舞的基佬一驚:,心里念到:“難道此人還真有應對之法?”

小豬:,然后開始瘋狂操作了起來!

變化的是醬汁,把他抽取出來,持有扒類

番茄汁,黑椒汁,還有香草汁

接著是調用部分

輸出結果:

此時的輸出結果,無不是狠狠的打了三個跳舞基佬的臉!小豬大喝道:

跳舞基佬開始慫了,邊說邊退后道:”你…豬哥村夫,你敢…

小豬哥義正言辭到:”住口,三只斷脊之犬,也敢在我店門前狺狺狂吠“!

三個跳舞基佬發出“啊”的叫聲后,應聲倒地不起。

小豬補刀到:

圍觀群眾無不拍手叫好,厲害厲害!

戲看完了,圍觀群眾也散了,大獲全勝的小豬大搖大擺地走回店里, 而此時他卻沒發現,在暗處里站著一個人:

“原來《如何讓孩子愛上設計模式》的功法在你手上,呵呵”, 隨之露出一抹冷笑,接著消失在空氣中… 小豬突然覺得背后一涼,回頭一看卻發現空無一人:

小豬安慰著說:“可能是心理作用吧!”,然后又繼續玩農藥了。

躲在暗處的人到底是誰呢?為什么她會知道小豬持有長18.4cm黑硬粗的 ——《如何讓孩子愛上設計模式》功法呢?是敵是友?是女是女? 小豬又會遇上怎樣的危機呢?又會發生怎樣的故事呢? 欲知后事如何,請聽下回分解…

======= 本章完 =======


好的,故事聽完了,接下來講一波概念性的東西~

橋接模式的定義

橋接模式基于單一職責原則,如果系統中的類存在多個 變化的維度,通過該模式可以將這幾個維度分離出來, 然后進行獨立擴展。這些分離開來的維度,通過在抽象層 持有其他維度的引用來進行關聯,就好像在兩個維度間 搭了橋一樣,所以叫橋接模式。


四個角色

Abstraction抽象部分的接口。通常在這個對象里面,要維護一個實現部分 的對象引用,在抽象對象里面的方法,需要調用實現部分的對象來完成。 這個對象里面的方法,通常都是跟具體的業務相關的方法。

Refined Abstraction:擴展抽象部分的接口,通常在這些對象里面, 定義跟實際業務相關的方法,這些方法的實現通常會使用Abstraction中 定義的方法,也可能需要調用實現部分的對象來完成。

Implementor:定義實現部分的接口,這個接口不用和Abstraction 里面的方法一致,通常是由Implementor接口提供基本的操作,而 Abstraction里面定義的是基于這些基本操作的業務方法,也就是說 Abstraction定義了基于這些基本操作的較高層次的操作。

ConcreteImplementor:真正實現Implementor接口的對象。


UML類圖


優缺點

優點

實現了抽象和實現部分的分離,更好的可擴展性,動態切換實現,很多情況下橋接模式可以替代多層繼承方案,極大減少子類個數!

缺點

增加系統的理解與設計難度,由于關聯關系建立在抽象層, 要求開發者一開始就針對抽象層進行設計與編程。要求正確識別出系統中兩個獨立變化的維度,因此其使用 范圍具有一定的局限性,如何正確識別兩個獨立維度也需要 一定的經驗積累。

適用場景

多維變化類或者多個樹狀圖間的耦合; 想為構建的抽象與具體化提供更多靈活性,避免兩層次間建立靜態的繼承聯系; 不希望使用繼承或因多層繼承導致系統類個急劇增加的額系統; 一個類存在兩個或多個獨立變化的維度,而且都需要獨立進行擴展。


本文代碼

https://github.com/coder-pig/DesignPatternsExample/tree/master/9.Bridge%20Pattern



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧洲日韩国产| 国产精品揄拍500视频| 国产精品亚洲自拍| 亚洲欧美变态国产另类| 久久成人人人人精品欧| 久久天堂电影网| 亚洲va男人天堂| 91丨九色丨国产在线| 久久视频在线免费观看| 欧美精品亚州精品| 日日狠狠久久偷偷四色综合免费| 国产69精品久久久久9999| 亚洲香蕉成人av网站在线观看| 国产精品黄色影片导航在线观看| 九九热这里只有在线精品视| 最近免费中文字幕视频2019| 疯狂做受xxxx高潮欧美日本| 国产玖玖精品视频| 欧美日本中文字幕| 成人国产精品一区| 亚洲老司机av| 国产精品稀缺呦系列在线| 亚洲天堂男人天堂女人天堂| 国产精品第10页| 日韩国产激情在线| 久久久久中文字幕| 日韩欧美在线视频日韩欧美在线视频| 社区色欧美激情 | 欧美精品国产精品日韩精品| 最近2019中文字幕在线高清| 日韩经典中文字幕在线观看| 欧美亚洲一区在线| 欧美日韩国产成人在线观看| 91中文精品字幕在线视频| 日日狠狠久久偷偷四色综合免费| 欧美自拍视频在线观看| 日本高清视频精品| 午夜精品久久久久久久99黑人| 日韩欧美在线一区| 日韩欧美国产免费播放| 久久国产精品久久久| 91精品久久久久久久| 久久精品视频免费播放| 青青a在线精品免费观看| 亚洲国产精久久久久久| 国产伦精品免费视频| 国产精品久久一区| 亚洲精品国产电影| 欧美视频在线免费| 国产精品免费观看在线| 国产在线精品成人一区二区三区| 久久久久久久国产| 亚洲另类激情图| 久久九九精品99国产精品| 国产成人精品久久亚洲高清不卡| 91国产美女在线观看| 欧美亚洲激情在线| 成人免费观看网址| 国产亚洲成av人片在线观看桃| 欧美成年人视频网站欧美| 45www国产精品网站| 精品自在线视频| 欧美日本黄视频| 亚洲第一精品久久忘忧草社区| 日本高清不卡在线| 国产97色在线| 亚洲国产99精品国自产| 欧美中文字幕第一页| 久久久久久久久国产精品| 免费91在线视频| 欧美精品一本久久男人的天堂| 精品在线小视频| 久久香蕉精品香蕉| 成人欧美在线观看| 成人写真福利网| 国产999精品| 亚洲欧美日韩综合| 成人黄色免费看| 亚洲视频在线观看免费| 亚洲在线观看视频网站| 国产精品视频在线观看| 国产精品激情av在线播放| 性欧美xxxx视频在线观看| 久久99久久99精品免观看粉嫩| 欧美精品一区二区三区国产精品| 国产在线观看91精品一区| 成人天堂噜噜噜| 国产精品va在线播放我和闺蜜| 日韩精品在线视频观看| 九九热r在线视频精品| 国产精品网站入口| 91精品久久久久久| 最新国产精品拍自在线播放| 激情懂色av一区av二区av| 欧美激情欧美激情在线五月| 精品久久久久久中文字幕一区奶水| 亚洲视频欧洲视频| www国产亚洲精品久久网站| 日韩免费在线观看视频| 色yeye香蕉凹凸一区二区av| 久久天天躁狠狠躁夜夜av| 日韩欧美精品中文字幕| 国产69精品99久久久久久宅男| 97在线观看免费高清| 成人免费观看49www在线观看| 久久久精品影院| 欧美日韩国产精品一区二区不卡中文| 欧美性猛交xxxx富婆弯腰| 国产精品扒开腿做| 麻豆精品精华液| 在线看国产精品| 日韩在线观看av| 黄色精品一区二区| 国产精品精品国产| 久久久久久免费精品| 国产在线观看不卡| 日韩免费av片在线观看| 欧美乱妇高清无乱码| 亚洲精品成人久久电影| 亚洲视频在线免费看| 久久精品国产一区二区电影| 九九热精品在线| 久久91精品国产91久久跳| 日韩亚洲欧美成人| 亚洲一区av在线播放| 日韩欧美在线看| 精品中文字幕久久久久久| 国产成人精品在线视频| 亚洲精品一区二区在线| 国产盗摄xxxx视频xxx69| www.xxxx精品| 亚洲人av在线影院| 日韩激情av在线播放| 国产精品三级网站| 91免费综合在线| 国产精品久久久久久亚洲调教| 欧美性猛交xxxxx水多| 亚洲色图35p| 九色精品免费永久在线| 亚洲国产天堂久久国产91| 亚洲欧美国内爽妇网| 91精品视频播放| 欧美夫妻性生活视频| 国产亚洲一区二区精品| 国产一区在线播放| 久久久精品美女| 色偷偷9999www| 亚洲成人免费在线视频| 欧美激情久久久久| 国产亚洲欧美另类中文| 亚洲色图第一页| 欧美电影免费看| 欧美日韩在线影院| 欧美亚洲免费电影| 亚洲午夜未满十八勿入免费观看全集| 91精品国产高清久久久久久91| 国产日韩欧美中文在线播放| 亚洲欧美另类自拍| 成人免费观看网址| 久久久精品亚洲| 日韩欧美在线免费观看| 日韩精品免费综合视频在线播放| 91亚洲精华国产精华| 久久久91精品国产一区不卡|