成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

[[431972]]

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

一、是什么

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

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

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

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

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

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

二、有哪些

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

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

單例模式

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

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

工廠模式

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

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

策略模式

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

至少分成兩部分:

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

代理模式

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

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

中介者模式

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

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

裝飾者模式

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

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

三、總結(jié)

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

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

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

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

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

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

參考文獻

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事件機制

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中間件原理

2021-06-08 08:33:23

NodeStream數(shù)據(jù)

2021-06-07 09:41:48

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

2024-08-16 13:59:00

2021-06-10 07:51:07

Node.js循環(huán)機制

2021-07-13 07:52:03

ReactHooks組件

2021-09-13 09:23:52

TypeScript命名空間

2021-11-09 08:51:13

模式命令面試

2021-11-05 07:47:56

代理模式對象

2021-11-02 22:04:58

模式
點贊
收藏

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

主站蜘蛛池模板: 亚洲欧美中文日韩在线v日本 | 欧美日韩毛片 | 日本手机看片 | 国产一区二区免费电影 | 国产精品一区二区在线 | 精品一区二区在线观看 | 日本不卡免费新一二三区 | 嫩草视频网 | 免费在线看黄 | 国产区精品视频 | 一区二区三区在线免费观看 | 国产精品一区二区电影 | 成人网在线观看 | 国产精品美女久久久 | 国产精品毛片无码 | 中文字幕成人网 | 国产精品99久久久久久www | 成人在线视频免费观看 | 欧美精品中文字幕久久二区 | 99久久久无码国产精品 | 一区视频| 欧美日产国产成人免费图片 | 91社区在线观看高清 | 日韩电影一区二区三区 | 91伊人| 日韩精品一区二区在线观看 | 国产精品久久久久久久久久久久 | 天堂成人国产精品一区 | 99久久精品国产毛片 | 午夜精品久久 | 免费国产一区二区 | 亚洲综合五月天婷婷 | 欧美理论 | 欧美国产日韩精品 | 91社区在线观看 | 欧美一区视频 | 精品国产一区二区三区久久久蜜月 | 国产一区二区在线免费观看 | 一区在线观看视频 | 国产精品黄 | 欧美午夜影院 |