摘要:工廠模式單例模式結構型設計模式關注于如何將類或對象組合成更大更復雜的結構,以簡化設計。
一、寫在前面
設計模式的定義:在面向對象軟件設計過程中針對特定問題的簡潔而優雅的解決方案
當然我們可以用一個通俗的說法:設計模式是解決某個特定場景下對某種問題的解決方案。因此,當我們遇到合適的場景時,我們可能會條件反射一樣自然而然想到符合這種場景的設計模式。
比如,當系統中某個接口的結構已經無法滿足我們現在的業務需求,但又不能改動這個接口,因為可能原來的系統很多功能都依賴于這個接口,改動接口會牽扯到太多文件。因此應對這種場景,我們可以很快地想到可以用適配器模式來解決這個問題。
以上參考自網易考拉前端團隊-JavaScript設計模式
二、設計原則設計哲學準則:
小即是美
讓每個程序只做好一件事
快速建立原型
舍棄高效率而取可移植性
采用純文本來存儲數據
充分利用軟件的杠桿效應(可復用)
使用shell腳本來提高杠桿效應和可移植性
避免強制性的用戶界面
每個程序都稱為過濾器
小準則:
允許用戶定制環境
盡量使操作系統內核小而輕量化
使用小寫字母且簡寫 list = ls
沉默是金
各部分之和大于整體
尋求90%的解決方案
三、SOLID設計原則
S 單一職責原則 single
一個程序只做好一件事情
如果功能復雜就拆分開,每個部分保持獨立
O 開放封閉原則 open
對擴展開放,對修改封閉
增加需求時,擴展新需求,而非修改已有代碼
這是軟件設計的終極目標
L 李氏置換原則
子類能覆蓋父類
父類能出現的地方子類就能出現
JS使用較少
I 接口獨立原則
保持接口獨立,避免出現“胖接口”
JS中沒有接口(ts)
D 依賴導致原則
面向接口編程,依賴于抽象而不依賴于具體
使用方只關心接口而不關心具體類的實現
JS使用較少
四、23種設計模式創建型設計模式
是一類處理對象創建的設計模式,通過某種方式控制對象的創建來避免基本對象創建時可能導致設計上的問題或增加設計上的復雜度。工廠模式、單例模式
結構型設計模式
關注于如何將類或對象組合成更大、更復雜的結構,以簡化設計。適配器模式、裝飾器模式、代理模式、外觀模式
行為型設計模式
用于不同對象之間職責劃分或者算法抽象,行為型設計模式不僅僅涉及類和對象,還涉及類或對象之間的交流模式并加以實現。觀察者模式、迭代器模式、狀態模式
UML(Unified Modeling Language)是一種統一建模語言,為面向對象開發系統的產品進行說明、可視化、和編制文檔的一種標準語言。5.1 類圖的表示
類圖分三層,第一層顯示類的名稱,如果是抽象類,則就用斜體顯示。第二層是類的特性,通常就是字段和屬性。第三層是類的操作,通常是方法或行為。前面的符號,+ 表示public,- 表示private,# 表示protected(js中為嚴格區分,ts中有)
那么如何根據類圖寫出相應的代碼結構呢?如下:
注:默認不添加屬性或方法類型,即為 public,因此 public 可省略
5.2 類關系表示泛化關系【繼承】
空心箭頭表示,是一種繼承關系。例如:自行車是車
聚合關系
空心菱形箭頭表示,是整體與部分的關系,與組合關系不同,整體和部分不是強依賴的。例如,部門撤銷了,人員不會消失,他們依然存在
組合關系
實心菱形箭頭表示,是整體與部分的關系,但部分不能離開整體而多帶帶存在。如公司和部門是整體和部分的關系,沒有公司就不存在部門
關聯關系【引用】
實線(可帶單/雙箭頭)表示,是一種擁有的關系,它使一個類知道另一個類的屬性和方法
除了上述類關系外,還有實現關系,依賴關系等表示法,可參考下面博文:
看懂UML類圖和時序圖
UML 各種圖總結精華
1 根據下面的信息畫UML類圖
打車時,可以打快車或者專車。任何車都有車牌號和名稱
不同車打車價格不同,快車1元/公里,專車2元/公里
行程開始時顯示車輛信息
行程結束時顯示打車金額
2 根據下面的信息畫UML類圖
某停車場,分三層,每層100車位
每個車位都能監控到車輛的駛入和離開
車輛駛入前,顯示每層空余車位數量
車輛駛入時,攝像頭可識別車牌號和時間
車輛出來時,出口顯示器顯示車牌號和停車時間
分析:
車是一個大類,快車和專車繼承自車
行程是一個多帶帶的類,連接用車和開始結束兩個動作
分析:
關系1:車位組成層,層組成車庫。組合關系
關系2:攝像機和顯示屏是車庫的部分,且能多帶帶存在。聚合關系
車停入車位時,需要判別該車位狀態(是否為空車位)
車庫需要記錄車駛入駛出的狀態和記錄車位數,需要通過層獲取
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/109937.html
摘要:前言月份開始出沒社區,現在差不多月了,按照工作的說法,就是差不多過了三個月的試用期,準備轉正了一般來說,差不多到了轉正的時候,會進行總結或者分享會議那么今天我就把看過的一些學習資源主要是博客,博文推薦分享給大家。 1.前言 6月份開始出沒社區,現在差不多9月了,按照工作的說法,就是差不多過了三個月的試用期,準備轉正了!一般來說,差不多到了轉正的時候,會進行總結或者分享會議!那么今天我就...
摘要:核心功能就是啟動一個服務并監聽項目文件改變,文件改變后再刷新服務器。 Karma 簡介 Karma是Testacular的新名字,在2012年google開源了Testacular,2013年Testacular改名為Karma。Karma是一個讓人感到非常神秘的名字,表示佛教中的緣分,因果報應,比Cassandra這種名字更讓人猜不透! Karma是一個基于Node.js的JavaS...
摘要:總想找個機會夯實一下自己的基礎,正好最近略有清閑,看視頻讀書擼代碼我選擇了第三者怎么感覺有點別扭,看視頻的話效率不高適合入門,看書的話一本你不知道的推薦給大家,選擇繼續看書的話還是算了吧,畢竟讀萬卷書不如行萬里路是吧。 總想找個機會夯實一下自己的JS基礎,正好最近略有清閑,看視頻?讀書?擼代碼?我選擇了第三者(怎么感覺有點別扭),看視頻的話效率不高適合入門,看書的話,一本《你不知道的J...
摘要:的介紹一般是這樣在中,類是隨內核一起發布的核心庫。庫為帶來了一種存儲原始數據的方法,可以讓處理二進制數據,每當需要在中處理操作中移動的數據時,就有可能使用庫。這樣傳遞數據會更快。 零、開始之前 1、 首先解釋一下node.js是什么? 2、node.js和javascript有什么不同? 1)因為javascript主要是用在browser,而node.js是在server或者你的電腦...
閱讀 2092·2021-11-02 14:48
閱讀 2768·2019-08-30 14:19
閱讀 2936·2019-08-30 13:19
閱讀 1304·2019-08-29 16:17
閱讀 3242·2019-08-26 14:05
閱讀 2997·2019-08-26 13:58
閱讀 3083·2019-08-23 18:10
閱讀 1111·2019-08-23 18:04