設計模式與前端工程師

来源:https://www.cnblogs.com/longbensong/archive/2023/03/02/17171304.html
-Advertisement-
Play Games

前端要不要學習設計模式 始終認為每個行業都有自己的特點,各自的專業性。一個開發工程師如果不知道電腦是哪些基本硬體組成,那麼我們大概率都會認為這個人非常不專業。那麼前端要不要學設計模式呢?設計模式跟前端有多大關係呢? 前端工程師首先是一個工程師,既然是一個軟體工程師,那麼類似設計模式、數據結構、網路相 ...


 前端要不要學習設計模式

  始終認為每個行業都有自己的特點,各自的專業性。一個開發工程師如果不知道電腦是哪些基本硬體組成,那麼我們大概率都會認為這個人非常不專業。那麼前端要不要學設計模式呢?設計模式跟前端有多大關係呢?

  前端工程師首先是一個工程師,既然是一個軟體工程師,那麼類似設計模式、數據結構、網路相關等基礎知識點都是必須的,而不是要不要學的問題,一個工程師應該具備這個領域特有的知識體系,而不是零散的知識點

 

 

工程師核心是什麼

  互聯網的這些年,技術革命就沒消停過。就比如前端來說,框架、庫,從原生 JavaScript 開始寫,然後寫 jQuery、寫 zepto、寫 Angular,寫寫寫,一直寫到現在的 Vue/React 等。各個技術概念、框架、庫都迭代的非常快,難道工程師的核心僅僅是會使用某某框架、庫嗎?難道會使用java 的程式員一定比不會用java的程式厲害嗎?

能夠決定一個工程師的本質的,不是這些瞬息萬變的技術點,而是那些不變的東西。

不變的東西,說的就是這種駕馭技術的能力

  1. 編碼能力
  2. 設計思維
  3. 電腦基礎
  4. 技術廣度、深度
  5. 解決問題的能力
  6. 溝通能力
  7. 文檔能力

編碼能力具體來說,它分為以下三個層次:

  • 能用健壯的代碼去解決具體的問題;
  • 能用抽象的思維去應對複雜的系統;
  • 能用工程化的思想去規劃更大規模的業務。

這三種能力在成長過程中是層層遞進的關係,其中後兩種能力可以說是對架構師的要求。事實上,能做到第一點並且把它做到扎實、做到嫻熟的人,已經堪稱同輩楷模。

用健壯的代碼去解決具體的問題的能力。這個能力在軟體工程領域所對標的知識體系,恰恰就是設計模式。所以,要成為一個靠譜的開發,先掌握設計模式

設計模式到底是什麼

維基百科中對設計模式的定義是這樣的:在軟體工程中,設計模式(Design Pattern)是對軟體設計中普遍存在(反覆出現)的各種問題,所提出的解決方案。

我的理解是設計模式並不是一個虛無的東西,而是經過各種軟體開發人員在特定的場景下提煉出來怎麼樣寫代碼的一種思路、一種解決方案,按照他們的思路可以讓代碼更加容易維護、擴展。也就是通常說的健壯的代碼。

設計模式基本原則

設計原則是設計模式的指導理論,它可以幫助我們規避不良的軟體設計。SOLID 指代的五個基本原則分別是:

  • 單一功能原則(Single Responsibility Principle)
  • 開放封閉原則(Opened Closed Principle)
  • 里式替換原則(Liskov Substitution Principle)
  • 介面隔離原則(Interface Segregation Principle)
  • 依賴反轉原則(Dependency Inversion Principle)

  在 JavaScript 設計模式中,主要用到的設計模式基本都圍繞“單一功能”和“開放封閉”這兩個原則來展開。

設計模式核心思想

  在實際開發中,不發生變化的代碼可以說是不存在的。我們能做的只有將這個變化造成的影響最小化 —— 將變與不變分離,確保變化的部分靈活、不變的部分穩定,這個過程,就叫“封裝變化”
。這樣的代碼,就是通常說的“健壯”的代碼,它可以經得起變化的考驗。

  而設計模式出現的意義,就是幫我們寫出這樣的代碼。設計模式的核心思想,就是“封裝變化”,將變與不變分離,確保變化的部分靈活、不變的部分穩定,代碼有良好的可維護性、可擴展性

  簡單的說就是觀察你整個邏輯裡面的變與不變,然後將變與不變分離,達到使變化的部分靈活、不變的地方穩定的。

常見的23種設計模式分類

無論是創建型、結構型還是行為型,這些具體的設計模式都是在用自己的方式去封裝不同類型的變化。

創建型模式:封裝了創建對象過程中的變化,比如下節的工廠模式,它做的事情就是將創建對象的過程抽離;

結構型模式:封裝的是對象之間組合方式、以及通信的變化,目的在於靈活地表達對象間的配合與依賴關係;

行為型模式:則將是對象千變萬化的行為進行抽離,確保我們能夠更安全、更方便地對行為進行更改。

 

參考:
《 JavaScript 設計模式》

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 定義 之所以叫簡單工廠是因為真的非常簡單,只要一個工廠(函數)就可以了,如果把被創建的對象稱為產品,把創建產品的對象或者方法稱為工廠,那麼只需要傳入不同的參數,就可以返回不同的產品(實例),這種模式就叫簡單工廠模式。 簡單工廠-餐館點菜 工廠模式其實就是將創建對象的過程單獨封裝在一個工廠中。 它很像 ...
  • html篇之《表單》 一、結構 <form action="url" method="post" name=""> <label>標註</label><input type="text" /> <select name=""> <option value="">選項1</option> <optio ...
  • 高德地圖JS API 實例 親測可用 參考網站=> 阿裡雲數據可視化平臺(下載json用的):http://datav.aliyun.com/portal/school/atlas/area_selector?spm=a2crr.23498931.0.0.685915dd8QQdlv <script ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 提升首屏的載入速度,是前端性能優化中最重要的環節,這裡筆者梳理出一些 常規且有效 的首屏優化建議 目標: 通過對比優化前後的性能變化,來驗證方案的有效性,瞭解並掌握其原理 1、路由懶載入 SPA 項目,一個路由對應一個頁面,如果不做處理, ...
  • 在前端框架Angular中,組件之間的通信很基礎也很重要,不同組件間的通信方式也不同,掌握組件間的通信方式會更加深刻的理解和使用Angular框架。 ...
  • 這篇文章不講一元運算符,也就是 + 、-、 *、 /、 =、 ||、 &&、 !這些。 位運算符是在數字底層(即表示數字的32個數位)進行操作的。 有符號整數使用 32 位的前 31 位表示整數值。第 32 位表示數值的符號,如 0 表示正,1 表示負。這一位稱為符號位。 正值以真正的二進位格式存儲 ...
  • 簡介 構造器模式,也被稱為建造者、生成器模式,是設計模式中比較容易理解的模式之一。 定義:將一個對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 定義不太容易理解,簡單的說就是構造器模式中的對象的屬性是通過一個構造器來設置的,最後返回一個不同屬性的對象。 在js中我們在創建對象時可以 ...
  • 前言 其實在 2019 年上半年,微信就發佈了基於小程式頁面的搜索,只是很多小伙伴並不知道,所以在這分享一下微信小程式搜索優化指南(SEO)。 為了更好地發現及理解小程式的頁面,強烈建議各位小伙伴花一些寶貴的時間認真閱讀本文。 小程式爬蟲 爬蟲訪問小程式內頁面時,會攜帶特定的 user-agent ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...