中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

漂亮的手機(jī)網(wǎng)站模板下載最新的軍事新聞

漂亮的手機(jī)網(wǎng)站模板下載,最新的軍事新聞,網(wǎng)站建設(shè)外包注意事項(xiàng),網(wǎng)頁制作個(gè)人介紹模板文章目錄 手機(jī)軟件何時(shí)統(tǒng)一——橋接模式憑什么你的游戲我不能玩緊耦合的程序演化合成/聚合復(fù)用原則松耦合的程序橋接模式橋接模式基本代碼 手機(jī)軟件何時(shí)統(tǒng)一——橋接模式 憑什么你的游戲我不能玩 時(shí)間:5月31日20點(diǎn)  地點(diǎn):大鳥房間  人物…

文章目錄

  • 手機(jī)軟件何時(shí)統(tǒng)一——橋接模式
    • 憑什么你的游戲我不能玩
    • 緊耦合的程序演化
    • 合成/聚合復(fù)用原則
    • 松耦合的程序
    • 橋接模式
    • 橋接模式基本代碼

手機(jī)軟件何時(shí)統(tǒng)一——橋接模式

憑什么你的游戲我不能玩

時(shí)間:5月31日20點(diǎn)  地點(diǎn):大鳥房間  人物:小菜、大鳥

今天是618活動(dòng)的啟動(dòng)日,小菜果斷上手了一臺(tái)PS4,正憧憬著到貨開機(jī)的場景,思緒卻飄到了2007年,那一年,手機(jī)市場沒有蘋果、沒有華為,只有諾基亞、摩托羅拉、索愛、波導(dǎo)……群雄逐鹿,好不熱鬧……

"大鳥,捧著個(gè)手機(jī),玩什么呢?"小菜沖進(jìn)了大鳥的房門。

“哈,玩小游戲呢,新買的手機(jī),竟然可以玩小時(shí)候的游戲’魂斗羅’。很久沒碰這東西了,感覺很爽哦。”

在這里插入圖片描述

“哦,是嗎,連這游戲都有呀,給我看看?!?/p>

"等等,等我死了再說。"大鳥玩得正開心。

"等你死了?"小菜笑道,“你什么時(shí)候會(huì)’死’呀?”

“那還有段時(shí)間了,至少半小時(shí)吧。”

"半小時(shí)才死呀,哦,那我半小時(shí)后來給你收尸。"小菜故意提高嗓門。

"你小子,找死呀。給你給你!"大鳥笑著把手機(jī)遞給了小菜,“游戲和紅白機(jī)上的一模一樣,很讓人懷舊呀。唉,我跟你們這種90后小子說紅白機(jī),不就等于對牛彈琴嗎!”

“怎么沒玩過,我可也是任天堂紅白機(jī)高手哦。大鳥別把我想得好像和你不是一代人一樣,我們的童年應(yīng)該差不多的?!?/p>

“現(xiàn)在時(shí)代變化太快了,差五歲,差不多就是差一代人,你是90后,我是80后,我們的童年差距當(dāng)然很大?!?/p>

“哪有這么嚴(yán)重,'魂斗羅’也是我很喜歡的游戲。對了,這游戲可以裝到我的手機(jī)里嗎?”

“你的手機(jī)是M品牌的吧,我的是N品牌的,按道理我這里的游戲你是不能玩的。”

“是嗎,這真是太掃興了。你說這手機(jī)為什么不能統(tǒng)一一下軟件呢?”

“其實(shí)手機(jī)真正的發(fā)展也就近十年,此期間各大手機(jī)廠商都發(fā)展自己的軟件部門開發(fā)手機(jī)軟件,哪怕是同一品牌的手機(jī),不同型號的也完全有可能軟件不兼容?!?/p>

"是的是的,"小菜點(diǎn)頭道,“我以前用過的N品牌的兩款手機(jī),功能都是固化在手機(jī)里的,最早那個(gè)手機(jī)的拼音輸入法實(shí)在是傻得要死,要發(fā)個(gè)短信得輸入半天,和現(xiàn)在的輸入法比真可說是天壤之別。而且當(dāng)年,同品牌的手機(jī),型號不同,軟件還算是基本兼容,可惜不同品牌,軟件基本還是不能整合在一起。”

“但你有沒有想過,在計(jì)算機(jī)領(lǐng)域里,就完全不一樣了。比如由于有了Windows操作系統(tǒng),使得所有的PC廠商不用關(guān)注軟件,而軟件制造商也不用過多關(guān)注硬件,這對計(jì)算機(jī)的整體發(fā)展是非常有利的。而有個(gè)別品牌的電腦公司自己開發(fā)操作系統(tǒng)和應(yīng)用軟件,盡管充滿了創(chuàng)意,但卻因?yàn)椴荒芘c其他軟件整合,而使得發(fā)展緩慢,連盜版都不愿意光顧它。”

“哈,手機(jī)為什么不可以學(xué)計(jì)算機(jī)呢?由專業(yè)公司開發(fā)操作系統(tǒng)和應(yīng)用軟件,手機(jī)商只要好好把手機(jī)硬件做好就行了。”

“統(tǒng)一談何容易,誰做的才算是標(biāo)準(zhǔn)呢?而誰又不希望自己的硬件和軟件成為標(biāo)準(zhǔn),然后一統(tǒng)天下。這里有很多商業(yè)競爭的問題,不是我們想的這么簡單。不過目前很多智能手機(jī)都在朝這個(gè)方向發(fā)展?;蛟S過幾年,我們手里的機(jī)器就可以實(shí)現(xiàn)軟件完全兼容了?!?/p>

“我想那時(shí)應(yīng)該就不叫作手機(jī)了,而是掌上電腦才更合適?!?/p>

注:2007年蘋果手機(jī)尚未出世,手機(jī)操作系統(tǒng)多種多樣(黑莓、塞班、Tizen等),互相封閉。而如今,存世的手機(jī)操作系統(tǒng)只剩下蘋果OS和安卓,鴻蒙正在穩(wěn)步進(jìn)場,雖然還沒有誰能一統(tǒng)天下,但比起當(dāng)年群雄混戰(zhàn)的狀態(tài)已經(jīng)算是井然有序了。本章內(nèi)容也將在2007年那個(gè)特定的歷史背景下展開……

緊耦合的程序演化

“說得有道理,另外你有沒有想過,這里其實(shí)蘊(yùn)含兩種完全不同的思維方式?”

“你是說手機(jī)硬件軟件和PC硬件軟件?”

“對的,如果我現(xiàn)在有一個(gè)N品牌的手機(jī),它有一個(gè)小游戲,我要玩游戲,程序應(yīng)該如何寫?”

“這還不簡單。先寫一個(gè)此品牌的游戲類,再用客戶端調(diào)用即可?!?/p>

游戲類:

在這里插入圖片描述

“很好,現(xiàn)在又有一個(gè)M品牌的手機(jī),也有小游戲,客戶端也可以調(diào)用,如何做?”“嗯,我想想,兩個(gè)品牌,都有游戲,我覺得從面向?qū)ο蟮乃枷雭碚f,應(yīng)該有一個(gè)父類’手機(jī)品牌游戲’,然后讓N和M品牌的手機(jī)游戲都繼承于它,這樣可以實(shí)現(xiàn)同樣的運(yùn)行方法”。

“小菜不錯(cuò),抽象的感覺來了。”

手機(jī)游戲類:

在這里插入圖片描述

“然后,由于手機(jī)都需要通訊錄功能,于是N品牌和M品牌都增加了通訊錄的增刪改查功能。你如何處理?”

“啊,這就有點(diǎn)麻煩了,那就意味著,父類應(yīng)該是’手機(jī)品牌’,下有’手機(jī)品牌M’和’手機(jī)品牌N’,每個(gè)子類下各有’通訊錄’和’游戲’子類?!?/p>

代碼結(jié)構(gòu)圖:

在這里插入圖片描述

手機(jī)類:

在這里插入圖片描述

下屬的各自通訊錄類和游戲類:

在這里插入圖片描述

客戶端代碼:

在這里插入圖片描述

“哈,這個(gè)結(jié)構(gòu)應(yīng)該還是可以的,現(xiàn)在我問你,如果我現(xiàn)在需要每個(gè)品牌都增加一個(gè)音樂播放功能,你如何做?”

“這個(gè)?那就在每個(gè)品牌的下面都增加一個(gè)子類?!?/p>

"你覺得這兩個(gè)子類差別大不大?"大鳥追問道。

"應(yīng)該是不大的,不過沒辦法呀,因?yàn)槠放撇煌?#xff0c;增加功能就必須要這樣的。"小菜無奈地說。

“好,那我現(xiàn)在又來了一家新的手機(jī)品牌’S’,它也有游戲、通訊錄、音樂播放功能,你如何處理?”

“啊,那就得再增加’手機(jī)品牌S’類和三個(gè)下屬功能子類。這好像有點(diǎn)麻煩了。”

“你也感覺麻煩啦?如果我還需要增加’輸入法’功能、‘拍照’功能,再增加’L品牌’‘X品牌’,你的類如何寫?”

"啊哦,"小菜學(xué)了一聲唐老鴨的叫聲,感慨道,“我要瘋了。要不這樣,我換一種方式?!?/p>

過了幾分鐘,小菜畫出了另一種結(jié)構(gòu)圖。

在這里插入圖片描述

“你覺得這樣子問題就可以解決嗎?”

"啊,"小菜搖了搖頭,“不行,要是增加手機(jī)功能或是增加品牌都會(huì)產(chǎn)生很大的影響。”

“你知道問題出在哪里嗎?”

"我不知道呀,"小菜很疑惑,“我感覺我一直在用面向?qū)ο蟮睦碚撛O(shè)計(jì)的,先有一個(gè)品牌,然后多個(gè)品牌就抽象出一個(gè)品牌抽象類,對于每個(gè)功能,就都繼承各自的品牌?;蛘?#xff0c;不從品牌,從手機(jī)軟件的角度去分類,這有什么問題呢?”

"是呀,就像我剛開始學(xué)會(huì)用面向?qū)ο蟮睦^承時(shí),感覺它既新穎又功能強(qiáng)大,所以只要可以用,就都用上繼承。這就好比是**‘有了新錘子,所有的東西看上去都成了釘子**。[DPE]’

但事實(shí)上,很多情況用繼承會(huì)帶來麻煩。比如,對象的繼承關(guān)系是在編譯時(shí)就定義好了,所以無法在運(yùn)行時(shí)改變從父類繼承的實(shí)現(xiàn)。子類的實(shí)現(xiàn)與它的父類有非常緊密的依賴關(guān)系,以至于父類實(shí)現(xiàn)中的任何變化必然會(huì)導(dǎo)致子類發(fā)生變化。當(dāng)你需要復(fù)用子類時(shí),如果繼承下來的實(shí)現(xiàn)不適合解決新的問題,則父類必須重寫或被其他更適合的類替換。這種依賴關(guān)系限制了靈活性并最終限制了復(fù)用性[DP]。"

“是呀,我這樣的繼承結(jié)構(gòu),如果不斷地增加新品牌或新功能,類會(huì)越來越多的?!?/p>

"在面向?qū)ο笤O(shè)計(jì)中,我們還有一個(gè)很重要的設(shè)計(jì)原則,那就是合成/聚合復(fù)用原則。即優(yōu)先使用對象合成/聚合,而不是類繼承[DP]。

合成/聚合復(fù)用原則

合成/聚合復(fù)用原則(CARP),盡量使用合成/聚合,盡量不要使用類繼承。[J&DP]

合成(Composition,也有翻譯成組合)和聚合(Aggregation)都是關(guān)聯(lián)的特殊種類。

聚合表示一種弱的’擁有’關(guān)系,體現(xiàn)的是A對象可以包含B對象,但B對象不是A對象的一部分;合成則是一種強(qiáng)的’擁有’關(guān)系,體現(xiàn)了嚴(yán)格的部分和整體的關(guān)系,部分和整體的生命周期一樣[DPE]。比方說,大雁有兩個(gè)翅膀,翅膀與大雁是部分和整體的關(guān)系,并且它們的生命周期是相同的,于是大雁和翅膀就是合成關(guān)系。而大雁是群居動(dòng)物,所以每只大雁都是屬于一個(gè)雁群,一個(gè)雁群可以有多只大雁,所以大雁和雁群是聚合關(guān)系。"
在這里插入圖片描述

合成/聚合復(fù)用原則的好處是,優(yōu)先使用對象的合成/聚合將有助于你保持每個(gè)類被封裝,并被集中在單個(gè)任務(wù)上。這樣類和類繼承層次會(huì)保持較小規(guī)模,并且不太可能增長為不可控制的龐然大物[DP]。就剛才的例子,你需要學(xué)會(huì)用對象的職責(zé),而不是結(jié)構(gòu)來考慮問題。其實(shí)答案就在之前我們聊到的手機(jī)與電腦的差別上?!?/p>

“哦,我想想看,手機(jī)是不同的品牌公司,各自做自己的軟件,就像我現(xiàn)在的設(shè)計(jì)一樣,而PC卻是硬件廠商做硬件,軟件廠商做軟件,組合起來才是可以用的機(jī)器。你是這個(gè)意思嗎?”

“很好,我很喜歡你提到的’組合’這個(gè)詞,實(shí)際上,像’游戲’‘通訊錄’'MP3音樂播放’這些功能都是軟件,如果我們可以讓其分離與手機(jī)的耦合,那么就可以大大減少面對新需求時(shí)改動(dòng)過大的不合理情況。”

“好的好的,我想想怎么弄,你的意思其實(shí)就是應(yīng)該有個(gè)’手機(jī)品牌’抽象類和’手機(jī)軟件’抽象類,讓不同的品牌和功能都分別繼承于它們,這樣要增加新的品牌或新的功能都不用影響其他類了?!?/p>

在這里插入圖片描述

"還剩個(gè)問題,手機(jī)品牌和手機(jī)軟件之間的關(guān)系呢?"大鳥問道。

“我覺得應(yīng)該是手機(jī)品牌包含手機(jī)軟件,但軟件并不是品牌的一部分,所以它們之間是聚合關(guān)系?!?/p>

在這里插入圖片描述

“說得好。來試著寫寫看吧?!?/p>

松耦合的程序

小菜經(jīng)過半小時(shí),改動(dòng)代碼如下。

手機(jī)軟件抽象類:

在這里插入圖片描述

手機(jī)品牌類:

在這里插入圖片描述

客戶端代碼:

在這里插入圖片描述

“感覺如何?是不是好很多?”

“是呀,現(xiàn)在如果要增加一個(gè)功能,比如手機(jī)音樂播放功能,那么只要增加這個(gè)類就行了。不會(huì)影響其他任何類。類的個(gè)數(shù)增加也只是一個(gè)?!?/p>

在這里插入圖片描述

“如果是要增加S品牌,只需要增加一個(gè)品牌子類就可以了。個(gè)數(shù)也是一個(gè),不會(huì)影響其他類的改動(dòng)。”

在這里插入圖片描述

“這顯然也符合了我們之前的一個(gè)什么設(shè)計(jì)原則?”

“開放-封閉原則。這樣的設(shè)計(jì)顯然不會(huì)修改原來的代碼,而只是擴(kuò)展類就行了。但今天我感受最深的是合成/聚合復(fù)用原則,也就是優(yōu)先使用對象的合成或聚合,而不是類繼承。聚合的魅力無限呀。相比,繼承的確很容易造成不必要的麻煩。”

“盲目使用繼承當(dāng)然就會(huì)造成麻煩,而其本質(zhì)原因主要是什么?”

“我想應(yīng)該是,繼承是一種強(qiáng)耦合的結(jié)構(gòu)。父類變,子類就必須要變?!薄癘K,所以我們在用繼承時(shí),一定要在是’is-a’的關(guān)系時(shí)再考慮使用,而不是任何時(shí)候都去使用。”

“大鳥,今天這個(gè)例子是不是一個(gè)設(shè)計(jì)模式?”

“哈,當(dāng)然,你看看剛才畫的那幅圖,兩個(gè)抽象類之間有什么?像什么?”

“有一個(gè)聚合線,哈,像一座橋。”

“好,說得好,這個(gè)設(shè)計(jì)模式就叫作’橋接模式’。”

橋接模式

橋接模式(Bridge),將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。[DP]

“這里需要理解一下,什么叫抽象與它的實(shí)現(xiàn)分離,這并不是說,讓抽象類與其派生類分離,因?yàn)檫@沒有任何意義。實(shí)現(xiàn)指的是抽象類和它的派生類用來實(shí)現(xiàn)自己的對象[DPE]。就剛才的例子而言,就是讓’手機(jī)’既可以按照品牌來分類,也可以按照功能來分類?!?/p>

按品牌分類實(shí)現(xiàn)結(jié)構(gòu)圖:

在這里插入圖片描述

按軟件分類實(shí)現(xiàn)結(jié)構(gòu)圖:

在這里插入圖片描述

“由于實(shí)現(xiàn)方式有多種,橋接模式的核心意圖是把這些實(shí)現(xiàn)獨(dú)立出來,讓它們各自變化。這就使得每種實(shí)現(xiàn)的變化不會(huì)影響其他實(shí)現(xiàn),從而達(dá)到應(yīng)對變化的目的?!?/p>

在這里插入圖片描述

橋接模式基本代碼

在這里插入圖片描述

Implementor類:

在這里插入圖片描述

客戶端代碼:

在這里插入圖片描述

“我覺得橋接模式所說的’將抽象部分與它的實(shí)現(xiàn)部分分離’,還是不好理解,我的理解就是實(shí)現(xiàn)系統(tǒng)可能有多角度分類,每一種分類都有可能變化,那么就把這種多角度分離出來讓它們獨(dú)立變化,減少它們之間的耦合。”

“哈,小菜說的和GoF說的不就是一回事嗎!只不過你說的更通俗,而人家卻更簡練而已。也就是說,在發(fā)現(xiàn)我們需要多角度去分類實(shí)現(xiàn)對象,而只用繼承會(huì)造成大量的類增加,不能滿足開放-封閉原則時(shí),就應(yīng)該要考慮用橋接模式了?!?/p>

“哈,我感覺只要真正深入地理解了設(shè)計(jì)原則,很多設(shè)計(jì)模式其實(shí)就是原則的應(yīng)用而已,或許在不知不覺中就在使用設(shè)計(jì)模式了?!?/p>

如果對你有幫助,就一鍵三連唄(關(guān)注+點(diǎn)贊+收藏),我會(huì)持續(xù)更新更多干貨~~

http://www.risenshineclean.com/news/4247.html

相關(guān)文章:

  • 蘇州市城鄉(xiāng)建設(shè)檔案館網(wǎng)站如何看待百度競價(jià)排名
  • 什么是網(wǎng)站獨(dú)立訪問者數(shù)量seo如何優(yōu)化關(guān)鍵詞上首頁
  • 門戶網(wǎng)站開發(fā)需求分析網(wǎng)絡(luò)營銷未來有哪些發(fā)展趨勢
  • wordpress怎么靜態(tài)頁面東莞搜索優(yōu)化十年樂云seo
  • wordpress最新的編輯器南寧網(wǎng)站優(yōu)化
  • 可以轉(zhuǎn)app的網(wǎng)站怎么做資深seo顧問
  • 網(wǎng)站建設(shè)全套教程含前端和后端關(guān)鍵詞排名客服
  • ppt網(wǎng)站鏈接怎么做seo排名關(guān)鍵詞搜索結(jié)果
  • 成都市做網(wǎng)站的公司百度推廣app怎么收費(fèi)
  • 網(wǎng)站后綴百度影響力排名順序
  • 怎么創(chuàng)建私人網(wǎng)站微信推廣多少錢一次
  • 國外推廣網(wǎng)站國內(nèi)營銷推廣渠道
  • 做蛋白go分析網(wǎng)站高端企業(yè)網(wǎng)站定制公司
  • 美橙表業(yè)手表網(wǎng)站2023年5月份病毒感染情況
  • 有域名 有主機(jī) 怎么建設(shè)網(wǎng)站獨(dú)立站seo外鏈平臺(tái)
  • 東莞seo建站優(yōu)化方法如何制作一個(gè)網(wǎng)頁鏈接
  • 江西做企業(yè)網(wǎng)站的公司無錫網(wǎng)絡(luò)推廣外包
  • 中山網(wǎng)站優(yōu)化關(guān)鍵詞排名優(yōu)化公司哪家強(qiáng)
  • dw做旅游網(wǎng)站模板下載網(wǎng)頁搜索排名提升
  • 網(wǎng)站備案 假通信地址seo深圳培訓(xùn)班
  • 新疆建設(shè)兵團(tuán)125團(tuán)網(wǎng)站什么是網(wǎng)站
  • 網(wǎng)站如何做原創(chuàng)文章什么是關(guān)鍵詞舉例說明
  • 煙臺(tái)開發(fā)區(qū)網(wǎng)站制作公司快速優(yōu)化網(wǎng)站排名的方法
  • 東莞網(wǎng)站seo推廣優(yōu)化金蝶進(jìn)銷存免費(fèi)版
  • 郴州網(wǎng)站建設(shè)公司官網(wǎng)steam交易鏈接怎么改
  • 做網(wǎng)站首頁有什么網(wǎng)絡(luò)推廣網(wǎng)站的方法
  • 網(wǎng)站的發(fā)布與推廣怎么寫seo優(yōu)化包括
  • 營業(yè)執(zhí)照申請網(wǎng)站互聯(lián)網(wǎng)營銷的特點(diǎn)
  • 創(chuàng)意簡約啤酒徽章logo設(shè)計(jì)頁面優(yōu)化的方法有哪些
  • 市場推廣seo職位描述百度seo怎么收費(fèi)