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

面試官:說說對設(shè)計(jì)模式的理解?常見的設(shè)計(jì)模式有哪些?

開發(fā) 前端
在軟件工程中,設(shè)計(jì)模式是對軟件設(shè)計(jì)中普遍存在的各種問題所提出的解決方案.

[[431972]]

本文轉(zhuǎn)載自微信公眾號「JS每日一題」,作者灰灰 。轉(zhuǎn)載本文請聯(lián)系JS每日一題公眾號。

一、是什么

在軟件工程中,設(shè)計(jì)模式是對軟件設(shè)計(jì)中普遍存在的各種問題所提出的解決方案

設(shè)計(jì)模式并不直接用來完成代碼的編寫,而是描述在各種不同情況下,要怎么解決問題的一種方案

設(shè)計(jì)模式能使不穩(wěn)定依賴于相對穩(wěn)定、具體依賴于相對抽象,避免會引起麻煩的緊耦合,以增強(qiáng)軟件設(shè)計(jì)面對并適應(yīng)變化的能力

因此,當(dāng)我們遇到合適的場景時,我們可能會條件反射一樣自然而然想到符合這種場景的設(shè)計(jì)模式

比如,當(dāng)系統(tǒng)中某個接口的結(jié)構(gòu)已經(jīng)無法滿足我們現(xiàn)在的業(yè)務(wù)需求,但又不能改動這個接口,因?yàn)榭赡茉瓉淼南到y(tǒng)很多功能都依賴于這個接口,改動接口會牽扯到太多文件

因此應(yīng)對這種場景,我們可以很快地想到可以用適配器模式來解決這個問題

二、有哪些

常見的設(shè)計(jì)模式有:

  • 單例模式
  • 工廠模式
  • 策略模式
  • 代理模式
  • 中介者模式
  • 裝飾者模式
  • ......

單例模式

保證一個類僅有一個實(shí)例,并提供一個訪問它的全局訪問點(diǎn)。實(shí)現(xiàn)的方法為先判斷實(shí)例存在與否,如果存在則直接返回,如果不存在就創(chuàng)建了再返回,這就確保了一個類只有一個實(shí)例對象

如下圖的車,只有一輛,一旦借出去則不能再借給別人:

工廠模式

工廠模式通常會分成3個角色:

  • 工廠角色-負(fù)責(zé)實(shí)現(xiàn)創(chuàng)建所有實(shí)例的內(nèi)部邏輯.
  • 抽象產(chǎn)品角色-是所創(chuàng)建的所有對象的父類,負(fù)責(zé)描述所有實(shí)例所共有的公共接口
  • 具體產(chǎn)品角色-是創(chuàng)建目標(biāo),所有創(chuàng)建的對象都充當(dāng)這個角色的某個具體類的實(shí)例

策略模式

策略模式,就是定義一系列的算法,把他們一個個封裝起來,并且使他們可以相互替換

至少分成兩部分:

  • 策略類(可變),策略類封裝了具體的算法,并負(fù)責(zé)具體的計(jì)算過程
  • 環(huán)境類(不變),接受客戶的請求,隨后將請求委托給某一個策略類

代理模式

代理模式:為對象提供一個代用品或占位符,以便控制對它的訪問

例如實(shí)現(xiàn)圖片懶加載的功能,先通過一張loading圖占位,然后通過異步的方式加載圖片,等圖片加載好了再把完成的圖片加載到img標(biāo)簽里面

中介者模式

中介者模式的定義:通過一個中介者對象,其他所有的相關(guān)對象都通過該中介者對象來通信,而不是相互引用,當(dāng)其中的一個對象發(fā)生改變時,只需要通知中介者對象即可

通過中介者模式可以解除對象與對象之間的緊耦合關(guān)系

裝飾者模式

裝飾者模式的定義:在不改變對象自身的基礎(chǔ)上,在程序運(yùn)行期間給對象動態(tài)地添加方法

通常運(yùn)用在原有方法維持不變,在原有方法上再掛載其他方法來滿足現(xiàn)有需求

三、總結(jié)

不斷去學(xué)習(xí)設(shè)計(jì)模式,會對我們有著極大的幫助,主要如下:

從許多優(yōu)秀的軟件系統(tǒng)中總結(jié)出的成功的、能夠?qū)崿F(xiàn)可維護(hù)性、復(fù)用的設(shè)計(jì)方案,使用這些方案將可以讓我們避免做一些重復(fù)性的工作

設(shè)計(jì)模式提供了一套通用的設(shè)計(jì)詞匯和一種通用的形式來方便開發(fā)人員之間溝通和交流,使得設(shè)計(jì)方案更加通俗易懂

大部分設(shè)計(jì)模式都兼顧了系統(tǒng)的可重用性和可擴(kuò)展性,這使得我們可以更好地重用一些已有的設(shè)計(jì)方案、功能模塊甚至一個完整的軟件系統(tǒng),避免我們經(jīng)常做一些重復(fù)的設(shè)計(jì)、編寫一些重復(fù)的代碼

合理使用設(shè)計(jì)模式并對設(shè)計(jì)模式的使用情況進(jìn)行文檔化,將有助于別人更快地理解系統(tǒng)

學(xué)習(xí)設(shè)計(jì)模式將有助于初學(xué)者更加深入地理解面向?qū)ο笏枷?/p>

參考文獻(xiàn)

https://zh.wikipedia.org/wiki/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F_(%E8%AE%A1%E7%AE%97%E6%9C%BA)

https://juejin.cn/post/6844903795017646094

 

https://segmentfault.com/a/1190000030850326

 

責(zé)任編輯:武曉燕 來源: JS每日一題
相關(guān)推薦

2021-06-03 08:14:01

NodeProcessJavaScript

2021-06-30 07:19:36

React事件機(jī)制

2021-06-04 07:55:30

Node Fs 操作

2021-05-31 10:35:34

TCPWebSocket協(xié)議

2020-08-03 07:38:12

單例模式

2021-09-26 10:57:16

集合操作場景

2021-07-12 08:35:24

組件應(yīng)用場景

2021-07-07 08:36:45

React應(yīng)用場景

2021-09-30 07:57:13

排序算法面試

2021-05-27 05:37:10

HTTP請求頭瀏覽器

2021-07-19 07:55:24

Redux中間件原理

2024-08-16 13:59:00

2021-06-07 09:41:48

NodeBuffer 網(wǎng)絡(luò)協(xié)議

2021-06-08 08:33:23

NodeStream數(shù)據(jù)

2021-11-09 08:51:13

模式命令面試

2021-11-05 07:47:56

代理模式對象

2021-11-10 07:47:49

組合模式場景

2021-11-04 06:58:32

策略模式面試

2021-11-03 14:10:28

工廠模式場景

2021-11-02 22:04:58

模式
點(diǎn)贊
收藏

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