国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

venmos / 2985人閱讀

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

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

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

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

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

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

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

小即是美

讓每個(gè)程序只做好一件事

快速建立原型

舍棄高效率而取可移植性

采用純文本來(lái)存儲(chǔ)數(shù)據(jù)

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

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

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

每個(gè)程序都稱為過(guò)濾器

小準(zhǔn)則:

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

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

使用小寫字母且簡(jiǎn)寫 list = ls

沉默是金

各部分之和大于整體

尋求90%的解決方案

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

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

一個(gè)程序只做好一件事情

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

O 開放封閉原則 open

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

增加需求時(shí),擴(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ì)模式
是一類處理對(duì)象創(chuàng)建的設(shè)計(jì)模式,通過(guò)某種方式控制對(duì)象的創(chuàng)建來(lái)避免基本對(duì)象創(chuàng)建時(shí)可能導(dǎo)致設(shè)計(jì)上的問題或增加設(shè)計(jì)上的復(fù)雜度。工廠模式、單例模式

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

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

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

類圖分三層,第一層顯示類的名稱,如果是抽象類,則就用斜體顯示。第二層是類的特性,通常就是字段和屬性。第三層是類的操作,通常是方法或行為。前面的符號(hào),+ 表示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)依賴的。例如,部門撤銷了,人員不會(huì)消失,他們依然存在

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

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

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

六、真題

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

打車時(shí),可以打快車或者專車。任何車都有車牌號(hào)和名稱

不同車打車價(jià)格不同,快車1元/公里,專車2元/公里

行程開始時(shí)顯示車輛信息

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

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

某停車場(chǎng),分三層,每層100車位

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

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

車輛駛?cè)霑r(shí),攝像頭可識(shí)別車牌號(hào)和時(shí)間

車輛出來(lái)時(shí),出口顯示器顯示車牌號(hào)和停車時(shí)間

分析:

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

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

分析:

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

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

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/109937.html

相關(guān)文章

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

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

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

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

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

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

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

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

    Tamic 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<