最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

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

2021-10-23 19:18 作者:劍離我離  | 我要投稿

可維護(hù) 可復(fù)用 可拓展 靈活性好

工廠模式

傳入什么就返回對(duì)應(yīng)的對(duì)象

策略模式

  • 面相對(duì)象的編程,并不是類越多越好,類的劃分是為了封裝,但分類的基礎(chǔ)是抽象,具有相同屬性和功能的對(duì)象的抽象集合才是類。

  • 策略模式定義了算法家族,分別封裝起來(lái),讓它們直接可以互相替換,此模式讓算法的變化,不會(huì)影響到使用算法的客戶。

開(kāi)閉原則

對(duì)修改關(guān)閉 對(duì)拓展開(kāi)放

依賴倒轉(zhuǎn)原則

  • 高層模塊不應(yīng)該依賴底層模塊,兩個(gè)都應(yīng)該依賴抽象。

  • 抽象不應(yīng)該依賴細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴抽象。

里式代換原則

  • 子類型必須能夠替換它們的父類型

  • 一個(gè)軟件實(shí)體如果使用的是一個(gè)父類的話,那么一定適用于其子類,而且它察覺(jué)不出父類對(duì)象和子類對(duì)象的區(qū)別。也就是說(shuō),在軟件里面,把父類都替換成它的子類,程序的行為沒(méi)有變化。

  • 比方說(shuō),貓是繼承動(dòng)物類的,以動(dòng)物的身份擁有吃、喝、跑、叫等行為,可當(dāng)某一天,我們需要狗、羊也擁有類似的行為,由于他們是繼承于動(dòng)物的,所以除了更改實(shí)例化的地方,程序的其他處不需要更改。

如: Animal ani = new cat() 在需要更換的時(shí)候 我們只需要直接換掉對(duì)應(yīng)的實(shí)例化對(duì)象即可。

裝飾者模式

動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé),就增加功能來(lái)說(shuō),裝飾模式比生成子類更為靈活。

模板方法模式

定義一個(gè)操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。 例如 在一份試卷中,只有學(xué)生填的答案是不一樣的,那么就可以把其他所有的東西都抽出來(lái),把學(xué)生填答案的【打印】 延遲到子類再進(jìn)行,而父類就只打空字符串就行了。

  • 特點(diǎn):模板方法模式是通過(guò)不變的行為搬移到超類,去除子類中的重復(fù)代碼來(lái)體現(xiàn)它的優(yōu)勢(shì)。

  • 當(dāng)不變的和可變的行為在方法的子類實(shí)現(xiàn)中混合在一起的時(shí)候,不變的行為就會(huì)在子類中重復(fù)出現(xiàn),我們通過(guò)模板方法模式把這些行為搬移到單一的地方,這樣就幫助擺脫重復(fù)的不變的行為的糾纏。

外觀模式

為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,此模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。 就像基金和股票。

建造者模式

將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。

觀察者模式

觀察者模式定義了一種一對(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象。這個(gè)主題對(duì)象在狀態(tài)發(fā)生變化時(shí),會(huì)通知所有觀察者對(duì)象,使它們能夠自動(dòng)更新自己。

抽象工廠模式

ps:自己注:可能為Spring實(shí)例化的核心模式 提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)需指定它們具體的類。 通過(guò)反射來(lái)創(chuàng)建; 在沒(méi)有反射的情況下,創(chuàng)建一個(gè)多個(gè)的對(duì)象工廠,可能就要在對(duì)應(yīng)的工廠方法中通過(guò)寫(xiě)switch來(lái)處理傳參,然后再進(jìn)行處理,這樣就無(wú)法避免switch的選擇了,而如果使用反射,即使是只有一個(gè)String,那么也能通過(guò)反射找到對(duì)應(yīng)需要?jiǎng)?chuàng)建的對(duì)象。

狀態(tài)模式

  • 當(dāng)一個(gè)對(duì)象的內(nèi)在狀態(tài)改變時(shí)允許其行為,這個(gè)對(duì)象看起來(lái)像是改變了其類

  • 狀態(tài)模式主要解決的是當(dāng)控制一個(gè)對(duì)象狀態(tài)轉(zhuǎn)換的條件表達(dá)式過(guò)于復(fù)雜時(shí)的情況。把狀態(tài)的判斷邏輯轉(zhuǎn)移到表示不同狀態(tài)的一系列類當(dāng)中,可以把復(fù)雜的判斷邏輯簡(jiǎn)化。

  • 當(dāng)一個(gè)對(duì)象的行為取決于它的狀態(tài),并且它必須在運(yùn)行時(shí)刻根據(jù)狀態(tài)改變它的行為時(shí),就可以考慮使用狀態(tài)模式了

適配器模式

將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口。Adapter使得原本由于接口不兼容而不能一起工作的那些類可以一起工作

備忘錄模式

在不破壞封裝的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài)。這樣以后就可將該對(duì)象恢復(fù)到原先保存的狀態(tài)。

  • 游戲的保存

組合模式

將對(duì)象組合成樹(shù)狀結(jié)構(gòu)以表示'部分-整體'的層次結(jié)構(gòu)。組合模式使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。

要形成一個(gè)樹(shù)狀結(jié)構(gòu),區(qū)別于平行的關(guān)系,就像把一個(gè)子公司的所有的部門都先封裝在這個(gè)子子公司中,而從層次上來(lái)說(shuō),這個(gè)子公司和總公司的其他部門是平行的關(guān)系,然后直接用root去添加即可

  • 組合模式這樣就定義了包含人力資源部和財(cái)務(wù)部這些基本對(duì)象和分公司、辦事處等組合對(duì)象的類層次結(jié)構(gòu)?;緦?duì)象可以被組合成更復(fù)雜的組合對(duì)象,而這個(gè)組合對(duì)象又可以被組合,這樣不斷地遞歸下去,客戶代碼中,任何用到基本對(duì)象的地方都可以使用組合對(duì)象了。

迭代器模式

提供一種方法順序訪問(wèn)一個(gè)聚合對(duì)象中各個(gè)元素,而又不暴露該對(duì)象的內(nèi)部表示

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

盡量使用合成/聚合,盡量不要使用類繼承。

  • 聚合表示一種弱的“擁有”關(guān)系,體現(xiàn)的是A對(duì)象可以包含B對(duì)象,但B對(duì)象不是A對(duì)象的一部分;

  • 合成則是一種強(qiáng)的“擁有”關(guān)系,體現(xiàn)了嚴(yán)格的部分和整體的關(guān)系,部分和整體的生命周期一樣。

  • 比如說(shuō),大雁有兩個(gè)翅膀,翅膀與大雁是部分和整體的關(guān)系,并且它們的生命周期是相同的,于是大雁和翅膀就是合成關(guān)系,而大雁是群居動(dòng)物,所以每只大雁都是屬于一個(gè)雁群,一個(gè)雁群可以有多只大雁,所以大雁和雁群是聚合關(guān)系。

  • 好處:優(yōu)先使用對(duì)象的和合成/聚合將有助于你保持每個(gè)類被封裝,并被集中在單個(gè)任務(wù)上。這樣類和類繼承層次會(huì)保持較小規(guī)模,并且不太可能增長(zhǎng)為不可控制的龐然大物。

橋接模式

將抽象部分與它的實(shí)現(xiàn)部分分離,使他們都可以獨(dú)立地變化。

  • 抽象與它的實(shí)現(xiàn)分離,這并不是說(shuō),讓抽象類與其派生類分離,因?yàn)檫@沒(méi)有任何意義。實(shí)現(xiàn)指的是抽象類和它的派生類用來(lái)實(shí)現(xiàn)自己的對(duì)象。例子:讓“手機(jī)”既可以按照品牌分類,也可以按照功能分類

命令模式

將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化;對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日志,以及支持可撤銷的操作。

責(zé)任鏈模式

使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,從而避免請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系。將這個(gè)對(duì)象連成一條鏈,并沿著這條鏈傳遞該請(qǐng)求,直到有一個(gè)對(duì)象處理它為止。

(handleMapping?)

通過(guò)設(shè)置上級(jí)的方式,來(lái)達(dá)到傳遞的效果 當(dāng)當(dāng)前的handle不能處理請(qǐng)求時(shí),就調(diào)用上級(jí)的handle

中介者模式

用一個(gè)中介對(duì)象來(lái)封裝一系列的對(duì)象交互。中介者使各對(duì)象不需要顯式地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互。

享元模式

運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。

解釋器模式

給定一個(gè)語(yǔ)言,定義它的文法的一種表示,并定義一個(gè)解釋器,這個(gè)解釋器使用該表示來(lái)解釋語(yǔ)言中的句子。

  • 如果一種特定類型的問(wèn)題發(fā)生的頻率足夠高,那么可能就值得將該問(wèn)題的各個(gè)實(shí)例表述為一個(gè)簡(jiǎn)單語(yǔ)言中的句子。這樣就可以構(gòu)建一個(gè)解釋器,該解釋器通過(guò)解釋這些句子來(lái)解決該問(wèn)題。

  • 當(dāng)有一個(gè)語(yǔ)言需要解釋執(zhí)行,并且你可將該語(yǔ)言中的句子表示為一個(gè)抽象語(yǔ)法樹(shù)時(shí),可使用解釋器模式。

  • (正則表達(dá)式)

  • 特點(diǎn):容易地改變和拓展文法,因?yàn)樵撃J绞褂妙悂?lái)表示文法規(guī)則,你可使用繼承來(lái)改變或拓展該文法。也比較容易實(shí)現(xiàn)文法,因?yàn)槎x抽象語(yǔ)法樹(shù)中各個(gè)節(jié)點(diǎn)的類的實(shí)現(xiàn)大體類似,這些類都易于直接編寫(xiě)。

訪問(wèn)者模式

表示一個(gè)作用于某對(duì)象結(jié)構(gòu)中的各元素的操作。它使你可以在不改變?cè)馗髟氐念惖那疤嵯露x作用于這些元素的新操作。


設(shè)計(jì)模式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
铅山县| 新宁县| 安义县| 二连浩特市| 海兴县| 新竹市| 高碑店市| 车致| 新丰县| 虹口区| 万载县| 台中县| 平武县| 基隆市| 湟中县| 湄潭县| 宝兴县| 乐平市| 阜宁县| 明光市| 巴青县| 宁夏| 阳泉市| 云阳县| 美姑县| 渑池县| 焉耆| 黎平县| 五指山市| 太白县| 玉溪市| 广宗县| 彰化市| 丹棱县| 扶风县| 沂水县| 政和县| 资溪县| 建昌县| 西贡区| 吴川市|