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

3分鐘幫你理解常用的5種設(shè)計(jì)模式

新聞
作為一個(gè)合格的程序員你一定聽說(shuō)過(guò)設(shè)計(jì)模式,設(shè)計(jì)模式有很多種,不用精通所有,至少得對(duì)常見的幾種融會(huì)貫通。設(shè)計(jì)模式就相當(dāng)于數(shù)學(xué)中的幾何定理,計(jì)算公式,掌握了它就可以直接代入。

 作為一個(gè)合格的程序員你一定聽說(shuō)過(guò)設(shè)計(jì)模式,設(shè)計(jì)模式有很多種,不用精通所有,至少得對(duì)常見的幾種融會(huì)貫通。設(shè)計(jì)模式就相當(dāng)于數(shù)學(xué)中的幾何定理,計(jì)算公式,掌握了它就可以直接代入。

 

[[351457]]

 

工廠模式

這是一個(gè)最基礎(chǔ)的設(shè)計(jì)模式,也是最常用的設(shè)計(jì)模式,它有簡(jiǎn)單工廠模式,工廠模式,抽象工廠模式。各有各的優(yōu)缺點(diǎn)。

故名思意,它就是一個(gè)加工廠,不同于現(xiàn)實(shí)的是,此處生產(chǎn)的不是生活用品,而是我們面向?qū)ο缶幊讨凶钪匾膶?duì)象。工廠模式比簡(jiǎn)單工廠模式更彈性化,遵循了開發(fā)-封閉原則。

抽象工廠就像現(xiàn)實(shí)中的工廠一樣,好處大家都知道,可以批量生產(chǎn)與定制,因?yàn)橛胁灰粯拥哪>?,就可以生產(chǎn)出大家需要的各種類型產(chǎn)品。

軟件開發(fā)中,我們更關(guān)注的是使用對(duì)象的方法,至于如何創(chuàng)建對(duì)象我們并不關(guān)心,抽象工廠只要定制我們所需的產(chǎn)品功能接口,然后讓工廠實(shí)現(xiàn)接口生產(chǎn)對(duì)象即可。

單例模式

這是一個(gè)非常簡(jiǎn)單的模式,只包含了一個(gè)類,重點(diǎn)要管理單例實(shí)例的創(chuàng)建,一般為了避免使用者錯(cuò)誤創(chuàng)建多余的對(duì)象,單例的構(gòu)造函數(shù)和析構(gòu)函數(shù)聲明為私有函數(shù)。多種單例如果有依賴關(guān)系,就要仔細(xì)處理構(gòu)建順序。它有幾個(gè)優(yōu)點(diǎn),使用簡(jiǎn)單,可以避免使用全局變量,隱藏對(duì)象的構(gòu)建細(xì)節(jié),避免多次構(gòu)建容易引起的錯(cuò)誤。總之,使用它不要急于一時(shí)的需求,因?yàn)槿绻麑⒛愁愒O(shè)計(jì)為單例就限制了可擴(kuò)展性,也會(huì)形成在各種可以隨意引用的一種趨向,不過(guò)這正也是它的便利之處。

裝飾器模式

人靠衣裝馬靠鞍,好的衣服可以提升一個(gè)人的氣質(zhì),但不會(huì)改變外貌與功能,這就是裝飾器模式,通過(guò)裝飾一個(gè)對(duì)象讓它更強(qiáng)大卻不會(huì)改變它的本質(zhì)。

舉一個(gè)軟件開發(fā)中的例子,比如你們已經(jīng)做好一個(gè)圖片傳送功能,也經(jīng)過(guò)了測(cè)試和線上測(cè)試這個(gè)功能很完美沒毛病,可是突然出現(xiàn)了一個(gè)新的需求,想要發(fā)送圖片時(shí),還能語(yǔ)音提醒,你們?cè)鯓釉诓挥绊懺械墓δ芮闆r下實(shí)現(xiàn)它呢,現(xiàn)在就可以使用裝飾器,也就是給圖片發(fā)送類裝飾一個(gè)語(yǔ)音功能。

適配器模式

適配器是什么?就比如耳機(jī),它可以連接在你的手機(jī)上也可以連上別人的手機(jī),電腦也可以,它就是一種適配器。

程序員們幾乎不可能離開數(shù)據(jù)庫(kù)去單獨(dú)開發(fā)一款應(yīng)用,所以選擇什么數(shù)據(jù)庫(kù)是最需要關(guān)心的事情,一旦選擇錯(cuò)誤,后期在性能上就會(huì)遇見很多瓶頸,適配器模式可以讓程序員們?cè)诓挥眯薷幕蛘吒暮苌俅a的情況下進(jìn)行數(shù)據(jù)庫(kù)的隨意切換。

第一步要定義好適配器接口,接著讓各種數(shù)據(jù)庫(kù)實(shí)現(xiàn)我們定義好的接口,在代碼里用定義好的方法,當(dāng)你想要切換數(shù)據(jù)庫(kù)時(shí),將該數(shù)據(jù)庫(kù)實(shí)現(xiàn)對(duì)應(yīng)接口的方法,就可以做到無(wú)縫連接啦。

策略模式

策略就是實(shí)現(xiàn)目標(biāo)方案的集合,它們都是用來(lái)實(shí)現(xiàn)一件事情的。

在軟件開發(fā)中,一個(gè)對(duì)象可以對(duì)不同場(chǎng)景使用不同的策略去實(shí)現(xiàn)同一個(gè)功能,比如在學(xué)習(xí)中老師會(huì)制定一個(gè)本學(xué)期期末目標(biāo)是多少,但是每個(gè)同學(xué)怎樣去完成它這個(gè)過(guò)程都是不一樣的,但是結(jié)果是一樣的。

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

總結(jié)

設(shè)計(jì)模式一定源于生活,其實(shí),萬(wàn)物都是來(lái)源于生活,但經(jīng)過(guò)我們的學(xué)習(xí)提煉之后,它便高于生活。設(shè)計(jì)模式可以幫助你解決大部分問(wèn)題,使用它會(huì)讓你的代碼看起來(lái)更加清晰,有條理。

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

2021-03-31 09:10:25

UI設(shè)計(jì)經(jīng)驗(yàn)

2011-05-26 09:03:17

JSONjavascript

2020-09-14 11:30:26

HTTP3運(yùn)維互聯(lián)網(wǎng)

2020-11-23 16:23:59

CSS設(shè)計(jì)技術(shù)

2024-09-18 08:21:24

JavaScriptTypeScriptprototype

2012-06-28 10:26:51

Silverlight

2020-09-11 09:35:18

前端JavaScript策略模式

2021-06-07 09:51:22

原型模式序列化

2022-11-02 17:57:36

Nginxrootalias

2018-06-26 05:23:19

線程安全函數(shù)代碼

2023-07-26 07:11:50

LVM底層抽象

2019-04-01 14:59:56

負(fù)載均衡服務(wù)器網(wǎng)絡(luò)

2018-07-31 16:10:51

Redo Undo數(shù)據(jù)庫(kù)數(shù)據(jù)

2017-02-21 13:00:27

LoadAverage負(fù)載Load

2011-08-08 09:22:10

Python

2019-07-24 09:28:36

Node.jskoa架構(gòu)

2018-05-06 16:26:03

關(guān)聯(lián)規(guī)則數(shù)據(jù)分析關(guān)聯(lián)規(guī)則推薦

2021-06-18 07:34:12

Kafka中間件微服務(wù)

2021-01-29 11:43:53

SSHLinux命令

2021-04-30 16:23:58

WebRTC實(shí)時(shí)音頻
點(diǎn)贊
收藏

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