自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

開(kāi)發(fā)中經(jīng)常使用的5種設(shè)計(jì)模式

開(kāi)發(fā) 前端
提到設(shè)計(jì)模式,很多人都會(huì)覺(jué)得老生常談,有些人覺(jué)得設(shè)計(jì)模式很有必要,有些人覺(jué)得設(shè)計(jì)模式?jīng)]那么重要,那么我們?cè)诠ぷ髦惺欠駪?yīng)該重視設(shè)計(jì)模式呢?我們是否應(yīng)該將設(shè)計(jì)模式大量應(yīng)用到我們的生產(chǎn)過(guò)程中呢?

 提到設(shè)計(jì)模式,很多人都會(huì)覺(jué)得老生常談,有些人覺(jué)得設(shè)計(jì)模式很有必要,有些人覺(jué)得設(shè)計(jì)模式?jīng)]那么重要,那么我們?cè)诠ぷ髦惺欠駪?yīng)該重視設(shè)計(jì)模式呢?我們是否應(yīng)該將設(shè)計(jì)模式大量應(yīng)用到我們的生產(chǎn)過(guò)程中呢?

 

[[350942]]

如果你從未聽(tīng)說(shuō)過(guò)設(shè)計(jì)模式,我敢打賭你一定不是一個(gè)合格程序員。這就好比一個(gè)人說(shuō)他自己是數(shù)學(xué)家,但是他連勾股定理都沒(méi)聽(tīng)過(guò),這怎么可能?

工廠模式

這是一個(gè)最基礎(chǔ)的設(shè)計(jì)模式,也是最常用的設(shè)計(jì)模式,這是一個(gè)我們平時(shí)一直在使用,但卻不知道自己在使用的設(shè)計(jì)模式。

工廠模式故名思意就是一個(gè)加工廠,不同于現(xiàn)實(shí)的是,這里生產(chǎn)的不是衣服,皮鞋,褲子等,而是我們面向?qū)ο缶幊讨凶钪匾膶?duì)象。

現(xiàn)實(shí)中工廠的好處我們都知道,不僅可以批量生產(chǎn),還可以批量定制,因?yàn)橛兄煌哪>?,它可以生產(chǎn)出人們需要的各種類(lèi)型的產(chǎn)品。

軟件開(kāi)發(fā)中,我們更關(guān)注的是使用對(duì)象的方法,至于對(duì)象如何創(chuàng)建的,我們并不是很關(guān)心,因此,抽象工廠解決了我們的問(wèn)題。我們只需要訂制我們需要的產(chǎn)品功能接口,然后讓工廠按照我們的接口,也就是實(shí)現(xiàn)接口生產(chǎn)對(duì)象即可。

通過(guò)這樣的調(diào)用,我們的產(chǎn)品如果有問(wèn)題的話,可以隨時(shí)召回,可以隨時(shí)被工廠補(bǔ)丁修補(bǔ),實(shí)現(xiàn)了產(chǎn)品的靈活擴(kuò)展。

適配器模式

現(xiàn)實(shí)中,我們經(jīng)常給手機(jī)充電,而我們使用的就是電源適配器,為什么叫適配器呢?因?yàn)樗粌H可以給我們自己的手機(jī)充電,也可以給別人的手機(jī)充電,甚至還可以給其它用電設(shè)備充電,因?yàn)樗梢赃m應(yīng)各種充電設(shè)備,所以叫做適配器。

軟件開(kāi)發(fā)中,我們幾乎或者不可能離開(kāi)數(shù)據(jù)庫(kù)而去開(kāi)發(fā)一款應(yīng)用,那么選擇什么數(shù)據(jù)庫(kù)是我們最需要關(guān)心的,因?yàn)槿绻x擇錯(cuò)了,可能后期在性能上就會(huì)出現(xiàn)瓶頸,那么有沒(méi)有一種辦法可以讓我們?cè)诓恍薷拇a,或者修改很少的代碼情況下進(jìn)行數(shù)據(jù)庫(kù)的無(wú)縫切換呢?答案就是適配器模式。

我們首先定義好適配器接口,然后讓各種數(shù)據(jù)庫(kù)實(shí)現(xiàn)我們定義好的接口,我們?cè)诖a中使用接口中定義的方法,這樣當(dāng)我們想要切換數(shù)據(jù)庫(kù)的時(shí)候,只要將該數(shù)據(jù)庫(kù)實(shí)現(xiàn)對(duì)應(yīng)接口的方法,我們就可以完成數(shù)據(jù)庫(kù)的適配,就可以無(wú)縫連接。

觀察者模式

觀察者模式,又叫做通知模式,是一種一對(duì)多的模式?,F(xiàn)實(shí)中,當(dāng)校長(zhǎng)或者老師在臺(tái)上發(fā)布一個(gè)命令的時(shí)候,廣播喇叭就會(huì)將命令傳達(dá)給每個(gè)學(xué)生,學(xué)生們聽(tīng)到命令的時(shí)候,都會(huì)有自己的反應(yīng),校長(zhǎng)或者老師不必向?qū)W生一個(gè)個(gè)傳達(dá),因?yàn)閺V播喇叭會(huì)把命令傳給學(xué)生,這里廣播喇叭就是一個(gè)觀察者,而老師和校長(zhǎng)就是被觀察者,學(xué)生們就是被通知對(duì)象,因此觀察者模式也叫做發(fā)布訂閱模式。

在軟件開(kāi)發(fā)中,比如我們的產(chǎn)品有這樣一個(gè)功能,用戶下單支付成功之后,就會(huì)發(fā)送一條短信通知用戶,如果之后希望不僅發(fā)送短信,還需要發(fā)送郵件,還需要語(yǔ)音通知,在這樣的情況下,我們就可以采用觀察者模式,我們將支付成功信息放入到消息隊(duì)列中,至于發(fā)短信還是發(fā)郵件,由各個(gè)業(yè)務(wù)模塊訂閱消息隊(duì)列自己處理。這樣在訂單模塊里面,就不需要一個(gè)個(gè)通知短信模塊,郵件模塊了。

裝飾器模式

現(xiàn)實(shí)生活中,一般情況下一個(gè)人換了一件衣服之后,我們依然可以認(rèn)出他,衣服就是他的裝飾,說(shuō)明裝飾并不影響一個(gè)人的容貌,也就是不影響這個(gè)人的功能,但是通過(guò)穿著一件高檔外衣,卻可以提升一個(gè)人的氣質(zhì),這就是裝飾的作用,而裝飾器模式就是通過(guò)裝飾一個(gè)對(duì)象而不改變對(duì)象來(lái)讓這個(gè)對(duì)象更強(qiáng)大。

舉一個(gè)軟件開(kāi)發(fā)中的案例,比如我們已經(jīng)設(shè)計(jì)好一個(gè)短信發(fā)送功能,并且經(jīng)過(guò)測(cè)試和線上測(cè)試這個(gè)功能是沒(méi)有任何問(wèn)題的,但是現(xiàn)在有一個(gè)新的需求,要求發(fā)送短信的時(shí)候,還能語(yǔ)音提醒,我們?nèi)绾文軌蛟诓挥绊懺械墓δ芮闆r下,實(shí)現(xiàn)這個(gè)功能呢,這個(gè)時(shí)候我們就可以使用裝飾器,也就是給短息發(fā)送類(lèi)裝飾一個(gè)語(yǔ)音功能,讓它不僅可以發(fā)送短信,此外還可以實(shí)現(xiàn)語(yǔ)音發(fā)送的功能。

策略模式

策略故名思意就是實(shí)現(xiàn)目標(biāo)方案的集合,簡(jiǎn)單來(lái)說(shuō)就是各種方法的集合,他們都是用來(lái)實(shí)現(xiàn)一件事情的。

軟件開(kāi)發(fā)中,一個(gè)對(duì)象對(duì)不同場(chǎng)景采用不同的策略去實(shí)現(xiàn)同一個(gè)功能,就是策略方法,如果你聽(tīng)說(shuō)過(guò)多態(tài),就會(huì)發(fā)現(xiàn)它和多態(tài)的定義很像,不同的是多態(tài)是不同對(duì)象對(duì)同一操作的不同的處理方法,而策略模式是同一個(gè)對(duì)象對(duì)同一個(gè)操作采用不同的策略進(jìn)行處理操作。

比如,我們有一個(gè)國(guó)慶7天游的項(xiàng)目,起始點(diǎn)和目的地都是從北京到莫斯科,但是可以采用不同的策略,可以飛機(jī),可以火車(chē),可以自駕,同一個(gè)夢(mèng)想,不同的實(shí)現(xiàn)方式。

淘寶首頁(yè)的千人千面也是策略模式,都是顯示商品,面對(duì)不同的人,顯示的就是不同的商品,這就是由策略決定的。

總結(jié)

如果你足夠細(xì)心的話,軟件開(kāi)發(fā)中的設(shè)計(jì)模式并不是憑空產(chǎn)生的,它一定是來(lái)源于生活,其實(shí),任何知識(shí)的產(chǎn)生都是來(lái)源于生活,只不過(guò)我們經(jīng)過(guò)學(xué)習(xí)提煉之后,將它高于生活。

設(shè)計(jì)模式不是萬(wàn)能的,它并不能幫助你解決所有問(wèn)題,但是它可以幫助你解決大部分問(wèn)題,并且在編碼中使用設(shè)計(jì)模式的話,你會(huì)發(fā)現(xiàn),你的代碼看起來(lái)會(huì)更加清晰,更加有條理。

學(xué)習(xí)設(shè)計(jì)模式,使用設(shè)計(jì)模式并不是最終的目的,我們的最終目的是無(wú)招勝有招,當(dāng)你把所有的設(shè)計(jì)模式全忘記的時(shí)候,但是在編碼中卻能運(yùn)用它們的時(shí)候,你才算沒(méi)白學(xué)設(shè)計(jì)模式。

責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2022-06-16 08:24:59

設(shè)計(jì)模式代碼前端

2010-03-31 17:17:32

2021-03-03 16:01:48

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

2010-04-07 16:41:50

Oracle SQL優(yōu)

2010-03-22 15:38:46

Python常用模塊

2021-04-09 20:38:20

Vue模式.前端

2021-03-04 22:15:36

JavaScript編程開(kāi)發(fā)

2017-08-08 10:13:21

開(kāi)源代碼開(kāi)發(fā)

2010-04-15 15:42:11

Oracle數(shù)據(jù)庫(kù)

2011-03-04 17:38:52

2009-01-04 13:49:17

Java設(shè)計(jì)模式設(shè)計(jì)模式工廠模式

2022-09-30 09:26:35

JavaScript技巧

2020-11-18 08:15:39

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

2022-09-25 22:56:52

JavaScrip編程技巧

2011-04-11 13:25:59

Sybase安裝

2018-02-01 09:26:12

面試算法題程序員

2010-06-10 13:34:17

MySQL5

2011-04-11 13:28:31

Oracle安裝

2009-12-15 15:54:11

路由器技術(shù)

2010-06-04 19:31:25

遠(yuǎn)程MySQL權(quán)限
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)