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

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

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

[[431972]]

本文轉載自微信公眾號「JS每日一題」,作者灰灰 。轉載本文請聯系JS每日一題公眾號。

一、是什么

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

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

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

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

比如,當系統中某個接口的結構已經無法滿足我們現在的業務需求,但又不能改動這個接口,因為可能原來的系統很多功能都依賴于這個接口,改動接口會牽扯到太多文件

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

二、有哪些

常見的設計模式有:

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

單例模式

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

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

工廠模式

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

  • 工廠角色-負責實現創建所有實例的內部邏輯.
  • 抽象產品角色-是所創建的所有對象的父類,負責描述所有實例所共有的公共接口
  • 具體產品角色-是創建目標,所有創建的對象都充當這個角色的某個具體類的實例

策略模式

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

至少分成兩部分:

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

代理模式

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

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

中介者模式

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

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

裝飾者模式

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

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

三、總結

不斷去學習設計模式,會對我們有著極大的幫助,主要如下:

從許多優秀的軟件系統中總結出的成功的、能夠實現可維護性、復用的設計方案,使用這些方案將可以讓我們避免做一些重復性的工作

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

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

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

學習設計模式將有助于初學者更加深入地理解面向對象思想

參考文獻

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

 

責任編輯:武曉燕 來源: JS每日一題
相關推薦

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協議

2020-08-03 07:38:12

單例模式

2021-09-26 10:57:16

集合操作場景

2021-07-12 08:35:24

組件應用場景

2021-07-07 08:36:45

React應用場景

2021-09-30 07:57:13

排序算法面試

2021-05-27 05:37:10

HTTP請求頭瀏覽器

2021-07-19 07:55:24

Redux中間件原理

2021-06-07 09:41:48

NodeBuffer 網絡協議

2021-06-08 08:33:23

NodeStream數據

2024-08-16 13:59:00

2021-06-10 07:51:07

Node.js循環機制

2021-07-13 07:52:03

ReactHooks組件

2021-09-13 09:23:52

TypeScript命名空間

2021-11-05 07:47:56

代理模式對象

2021-11-09 08:51:13

模式命令面試

2021-11-02 22:04:58

模式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲天堂影院 | 伊人精品国产 | 96久久久久久 | 日韩电影中文字幕 | 久视频在线观看 | 成人午夜精品一区二区三区 | 亚洲日韩中文字幕一区 | 国产高清视频一区二区 | 成人在线观 | 精品无码久久久久国产 | 亚洲国产成人精品久久 | 欧美国产日韩在线观看 | 国产在线激情视频 | 国产亚洲www | 亚洲a视频 | 色综合天天天天做夜夜夜夜做 | 男女羞羞视频在线免费观看 | 日韩国产在线观看 | 成人午夜激情 | 狠狠躁夜夜躁人人爽天天高潮 | 美女一级黄 | 亚洲免费视频一区 | 国产高清视频在线观看 | 国产欧美精品区一区二区三区 | 成人在线精品视频 | 中文字幕第二区 | 精品一区久久 | 国产在线观看一区二区 | 国产 日韩 欧美 在线 | 中国美女撒尿txxxxx视频 | 日韩一区在线观看视频 | 久久成人av | 精品一区二区三区在线观看 | 久久国产精品免费一区二区三区 | 免费精品| 男女羞羞视频在线看 | 美女福利视频 | 午夜在线小视频 | 伊人久久免费视频 | 国产精品成人在线 | av超碰|