亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JS設(shè)計(jì)模式學(xué)習(xí)_基礎(chǔ)篇

venmos / 3117人閱讀

摘要:工廠模式單例模式結(jié)構(gòu)型設(shè)計(jì)模式關(guān)注于如何將類或?qū)ο蠼M合成更大更復(fù)雜的結(jié)構(gòu),以簡化設(shè)計(jì)。

一、寫在前面
設(shè)計(jì)模式的定義:在面向?qū)ο筌浖O(shè)計(jì)過程中針對特定問題的簡潔而優(yōu)雅的解決方案

當(dāng)然我們可以用一個通俗的說法:設(shè)計(jì)模式是解決某個特定場景下對某種問題的解決方案。因此,當(dāng)我們遇到合適的場景時,我們可能會條件反射一樣自然而然想到符合這種場景的設(shè)計(jì)模式。

比如,當(dāng)系統(tǒng)中某個接口的結(jié)構(gòu)已經(jīng)無法滿足我們現(xiàn)在的業(yè)務(wù)需求,但又不能改動這個接口,因?yàn)榭赡茉瓉淼南到y(tǒng)很多功能都依賴于這個接口,改動接口會牽扯到太多文件。因此應(yīng)對這種場景,我們可以很快地想到可以用適配器模式來解決這個問題。

以上參考自網(wǎng)易考拉前端團(tuán)隊(duì)-JavaScript設(shè)計(jì)模式

二、設(shè)計(jì)原則

設(shè)計(jì)哲學(xué)準(zhǔn)則:

小即是美

讓每個程序只做好一件事

快速建立原型

舍棄高效率而取可移植性

采用純文本來存儲數(shù)據(jù)

充分利用軟件的杠桿效應(yīng)(可復(fù)用)

使用shell腳本來提高杠桿效應(yīng)和可移植性

避免強(qiáng)制性的用戶界面

每個程序都稱為過濾器

小準(zhǔn)則:

允許用戶定制環(huán)境

盡量使操作系統(tǒng)內(nèi)核小而輕量化

使用小寫字母且簡寫 list = ls

沉默是金

各部分之和大于整體

尋求90%的解決方案

三、SOLID設(shè)計(jì)原則

S 單一職責(zé)原則 single

一個程序只做好一件事情

如果功能復(fù)雜就拆分開,每個部分保持獨(dú)立

O 開放封閉原則 open

對擴(kuò)展開放,對修改封閉

增加需求時,擴(kuò)展新需求,而非修改已有代碼

這是軟件設(shè)計(jì)的終極目標(biāo)

L 李氏置換原則

子類能覆蓋父類

父類能出現(xiàn)的地方子類就能出現(xiàn)

JS使用較少

I 接口獨(dú)立原則

保持接口獨(dú)立,避免出現(xiàn)“胖接口”

JS中沒有接口(ts)

D 依賴導(dǎo)致原則

面向接口編程,依賴于抽象而不依賴于具體

使用方只關(guān)心接口而不關(guān)心具體類的實(shí)現(xiàn)

JS使用較少

四、23種設(shè)計(jì)模式

創(chuàng)建型設(shè)計(jì)模式
是一類處理對象創(chuàng)建的設(shè)計(jì)模式,通過某種方式控制對象的創(chuàng)建來避免基本對象創(chuàng)建時可能導(dǎo)致設(shè)計(jì)上的問題或增加設(shè)計(jì)上的復(fù)雜度。工廠模式、單例模式

結(jié)構(gòu)型設(shè)計(jì)模式
關(guān)注于如何將類或?qū)ο蠼M合成更大、更復(fù)雜的結(jié)構(gòu),以簡化設(shè)計(jì)。適配器模式、裝飾器模式、代理模式、外觀模式

行為型設(shè)計(jì)模式
用于不同對象之間職責(zé)劃分或者算法抽象,行為型設(shè)計(jì)模式不僅僅涉及類和對象,還涉及類或?qū)ο笾g的交流模式并加以實(shí)現(xiàn)。觀察者模式、迭代器模式、狀態(tài)模式

五、UML類圖
UML(Unified Modeling Language)是一種統(tǒng)一建模語言,為面向?qū)ο箝_發(fā)系統(tǒng)的產(chǎn)品進(jìn)行說明、可視化、和編制文檔的一種標(biāo)準(zhǔn)語言。
5.1 類圖的表示

類圖分三層,第一層顯示類的名稱,如果是抽象類,則就用斜體顯示。第二層是類的特性,通常就是字段和屬性。第三層是類的操作,通常是方法或行為。前面的符號,+ 表示public,- 表示private,# 表示protected(js中為嚴(yán)格區(qū)分,ts中有)

那么如何根據(jù)類圖寫出相應(yīng)的代碼結(jié)構(gòu)呢?如下:

注:默認(rèn)不添加屬性或方法類型,即為 public,因此 public 可省略

5.2 類關(guān)系表示

泛化關(guān)系【繼承】
空心箭頭表示,是一種繼承關(guān)系。例如:自行車是車

聚合關(guān)系
空心菱形箭頭表示,是整體與部分的關(guān)系,與組合關(guān)系不同,整體和部分不是強(qiáng)依賴的。例如,部門撤銷了,人員不會消失,他們依然存在

組合關(guān)系
實(shí)心菱形箭頭表示,是整體與部分的關(guān)系,但部分不能離開整體而多帶帶存在。如公司和部門是整體和部分的關(guān)系,沒有公司就不存在部門

關(guān)聯(lián)關(guān)系【引用】
實(shí)線(可帶單/雙箭頭)表示,是一種擁有的關(guān)系,它使一個類知道另一個類的屬性和方法

除了上述類關(guān)系外,還有實(shí)現(xiàn)關(guān)系,依賴關(guān)系等表示法,可參考下面博文:
看懂UML類圖和時序圖
UML 各種圖總結(jié)精華

六、真題

1 根據(jù)下面的信息畫UML類圖

打車時,可以打快車或者專車。任何車都有車牌號和名稱

不同車打車價格不同,快車1元/公里,專車2元/公里

行程開始時顯示車輛信息

行程結(jié)束時顯示打車金額

2 根據(jù)下面的信息畫UML類圖

某停車場,分三層,每層100車位

每個車位都能監(jiān)控到車輛的駛?cè)牒碗x開

車輛駛?cè)肭埃@示每層空余車位數(shù)量

車輛駛?cè)霑r,攝像頭可識別車牌號和時間

車輛出來時,出口顯示器顯示車牌號和停車時間

分析:

車是一個大類,快車和專車?yán)^承自車

行程是一個多帶帶的類,連接用車和開始結(jié)束兩個動作

分析:

關(guān)系1:車位組成層,層組成車庫。組合關(guān)系

關(guān)系2:攝像機(jī)和顯示屏是車庫的部分,且能多帶帶存在。聚合關(guān)系

車停入車位時,需要判別該車位狀態(tài)(是否為空車位)

車庫需要記錄車駛?cè)腭偝龅臓顟B(tài)和記錄車位數(shù),需要通過層獲取

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/109937.html

相關(guān)文章

  • 個人分享--web前端學(xué)習(xí)資源分享

    摘要:前言月份開始出沒社區(qū),現(xiàn)在差不多月了,按照工作的說法,就是差不多過了三個月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來說,差不多到了轉(zhuǎn)正的時候,會進(jìn)行總結(jié)或者分享會議那么今天我就把看過的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開始出沒社區(qū),現(xiàn)在差不多9月了,按照工作的說法,就是差不多過了三個月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來說,差不多到了轉(zhuǎn)正的時候,會進(jìn)行總結(jié)或者分享會議!那么今天我就...

    sherlock221 評論0 收藏0
  • Javascript CI(2)- Karma 基礎(chǔ)學(xué)習(xí)

    摘要:核心功能就是啟動一個服務(wù)并監(jiān)聽項(xiàng)目文件改變,文件改變后再刷新服務(wù)器。 Karma 簡介 Karma是Testacular的新名字,在2012年google開源了Testacular,2013年Testacular改名為Karma。Karma是一個讓人感到非常神秘的名字,表示佛教中的緣分,因果報(bào)應(yīng),比Cassandra這種名字更讓人猜不透! Karma是一個基于Node.js的JavaS...

    Ku_Andrew 評論0 收藏0
  • JS基礎(chǔ)-underscore源碼解析

    摘要:總想找個機(jī)會夯實(shí)一下自己的基礎(chǔ),正好最近略有清閑,看視頻讀書擼代碼我選擇了第三者怎么感覺有點(diǎn)別扭,看視頻的話效率不高適合入門,看書的話一本你不知道的推薦給大家,選擇繼續(xù)看書的話還是算了吧,畢竟讀萬卷書不如行萬里路是吧。 總想找個機(jī)會夯實(shí)一下自己的JS基礎(chǔ),正好最近略有清閑,看視頻?讀書?擼代碼?我選擇了第三者(怎么感覺有點(diǎn)別扭),看視頻的話效率不高適合入門,看書的話,一本《你不知道的J...

    anyway 評論0 收藏0
  • node.js入門學(xué)習(xí)筆記整理——基礎(chǔ)

    摘要:的介紹一般是這樣在中,類是隨內(nèi)核一起發(fā)布的核心庫。庫為帶來了一種存儲原始數(shù)據(jù)的方法,可以讓處理二進(jìn)制數(shù)據(jù),每當(dāng)需要在中處理操作中移動的數(shù)據(jù)時,就有可能使用庫。這樣傳遞數(shù)據(jù)會更快。 零、開始之前 1、 首先解釋一下node.js是什么? 2、node.js和javascript有什么不同? 1)因?yàn)閖avascript主要是用在browser,而node.js是在server或者你的電腦...

    Tamic 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<