成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

記錄一些用來學(xué)習(xí)設(shè)計模式的博客及書籍:

NSFish / 2215人閱讀

摘要:里氏代換原則里氏代換原則面向?qū)ο笤O(shè)計的基本原則之一。里氏代換原則中說,任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)。里氏代換原則是對開閉原則的補(bǔ)充。而基類與子類的繼承關(guān)系就是抽象化的具體實(shí)現(xiàn),所以里氏代換原則是對實(shí)現(xiàn)抽象化的具體步驟的規(guī)范。

一、設(shè)計模式的六大原則:

1、開閉原則(Open Close Principle)

開閉原則就是說對擴(kuò)展開放,對修改關(guān)閉。在程序需要進(jìn)行拓展的時候,不能去修改原有的代碼,實(shí)現(xiàn)一個熱插拔的效果。所以一句話概括就是:為了使程序的擴(kuò)展性好,易于維護(hù)和升級。想要達(dá)到這樣的效果,我們需要使用接口和抽象類,后面的具體設(shè)計中我們會提到這點(diǎn)。

2、里氏代換原則(Liskov Substitution Principle)

里氏代換原則(Liskov Substitution Principle LSP)面向?qū)ο笤O(shè)計的基本原則之一。 里氏代換原則中說,任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)。 LSP是繼承復(fù)用的基石,只有當(dāng)衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被復(fù)用,而衍生類也能夠在基類的基礎(chǔ)上增加新的行為。里氏代換原則是對“開-閉”原則的補(bǔ)充。實(shí)現(xiàn)“開-閉”原則的關(guān)鍵步驟就是抽象化。而基類與子類的繼承關(guān)系就是抽象化的具體實(shí)現(xiàn),所以里氏代換原則是對實(shí)現(xiàn)抽象化的具體步驟的規(guī)范?!?From Baidu 百科

3、依賴倒轉(zhuǎn)原則(Dependence Inversion Principle)

這個是開閉原則的基礎(chǔ),具體內(nèi)容:真對接口編程,依賴于抽象而不依賴于具體。

4、接口隔離原則(Interface Segregation Principle)

這個原則的意思是:使用多個隔離的接口,比使用單個接口要好。還是一個降低類之間的耦合度的意思,從這兒我們看出,其實(shí)設(shè)計模式就是一個軟件的設(shè)計思想,從大型軟件架構(gòu)出發(fā),為了升級和維護(hù)方便。所以上文中多次出現(xiàn):降低依賴,降低耦合。

5、迪米特法則(最少知道原則)(Demeter Principle)

為什么叫最少知道原則,就是說:一個實(shí)體應(yīng)當(dāng)盡量少的與其他實(shí)體之間發(fā)生相互作用,使得系統(tǒng)功能模塊相對獨(dú)立。

6、合成復(fù)用原則(Composite Reuse Principle)

原則是盡量使用合成/聚合的方式,而不是使用繼承。

二、設(shè)計模式分類:

設(shè)計模式可以分為三大類

創(chuàng)建型:

單例模式(Singleton) :確保有且只有一個對象被創(chuàng)建。

構(gòu)建模式(Builder) :將一個復(fù)雜對象的構(gòu)建與他的表示相分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。

原型模式(Prototype) :用原型實(shí)例指定創(chuàng)建對象的種類,并且通過拷貝這些原型來創(chuàng)建新的對象。

抽象工廠模式(Abstract Factory) :允許客戶創(chuàng)建對象的家族,而無需指定他們的具體類。

工廠方法模式(Factory Method) :由子類決定要創(chuàng)建的具體類是哪一個。

結(jié)構(gòu)型:

裝飾者模式(Decorator) :包裝一個對象,以提供新的行為。

代理模式(Proxy) :包裝對象,以控制對此對象的訪問。

組合模式(Composite) :客戶用一致的方法處理對象集合和單個對象。

橋連接模式(Bridge) :將抽象部分與它的實(shí)現(xiàn)部分相分離,使他們可以獨(dú)立的變化。

適配器模式(Adapter) :封裝對象,并提供不同的接口。

享元模式:(Flyweight) :共享相同的數(shù)據(jù)減少重復(fù)創(chuàng)建

外觀模式(Facade) :簡化一群類的接口。

行為型:

策略模式(Strategy) :封裝可以互換的行為,并使用委托來決定要使用哪一個。

狀態(tài)模式(State) :封裝了基于狀態(tài)的行為,并使用委托在行為之間切換。

責(zé)任鏈模式(Chain of Responsibility) :使多個對象都有機(jī)會處理請求,從而避免請求的送發(fā)者和接收者之間的耦合關(guān)系 。

解釋器模式(Interpreter) :給定一個語言,定義他的文法的一個表示,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。

命令模式(Command) :封裝請求成為對象。

觀察者模式(Observer) :讓對象能夠在狀態(tài)改變時被通知。

備忘錄模式(Memento) :在不破壞對象的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。

迭代器模式(Iterator) :在對象的集合之中游走,而不暴露集合的實(shí)現(xiàn)。

模板方法模式(Template Method) :有子類決定如何實(shí)現(xiàn)一個算法中的步驟。

訪問者模式(Visitor) :表示一個作用于某對象結(jié)構(gòu)中的各元素的操作,它使你可以在不改變各元素類的前提下定義作用于這個元素的新操作。

中介者模式(Mediator) :用一個中介對象封裝一些列的對象交互。

三、文章:

史上最全設(shè)計模式導(dǎo)學(xué)目錄(完整版)

23 種設(shè)計模式

寫最好的設(shè)計模式專欄

設(shè)計模式大雜燴(24種設(shè)計模式的總結(jié)以及學(xué)習(xí)設(shè)計模式的幾點(diǎn)建議)

二十三種設(shè)計模式及分類

練手源碼以托管到github

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

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

相關(guān)文章

  • 前端技術(shù) 博客文章、書籍 積累

    摘要:好多編輯器例如等都支持這樣的語法來快速的編寫代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計怎樣進(jìn)行 書籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級程序設(shè)計》《JavaScript框架設(shè)計》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語言精粹(修訂版)》《JavaScript設(shè)計模式》《J...

    LiangJ 評論0 收藏0
  • 前端技術(shù) 博客文章、書籍 積累

    摘要:好多編輯器例如等都支持這樣的語法來快速的編寫代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計怎樣進(jìn)行 書籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級程序設(shè)計》《JavaScript框架設(shè)計》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語言精粹(修訂版)》《JavaScript設(shè)計模式》《J...

    codercao 評論0 收藏0
  • 前端技術(shù) 博客文章、書籍 積累

    摘要:好多編輯器例如等都支持這樣的語法來快速的編寫代碼如何優(yōu)雅地使用把標(biāo)簽放在結(jié)束標(biāo)簽之后結(jié)束標(biāo)簽之前的差別什么是響應(yīng)式設(shè)計怎樣進(jìn)行 書籍 《JavaScriptDOM編程藝術(shù)》《JavaScript高級程序設(shè)計》《JavaScript框架設(shè)計》《JavaScript專家編程》《JavaScript Ninjia》《JavaScript語言精粹(修訂版)》《JavaScript設(shè)計模式》《J...

    huayeluoliuhen 評論0 收藏0
  • 初學(xué)者福音!可能是最適合你Java學(xué)習(xí)路線和方法推薦。

    摘要:學(xué)習(xí)完多線程之后可以通過下面這些問題檢測自己是否掌握,下面這些問題的答案以及常見多線程知識點(diǎn)的總結(jié)在這里??蛇x數(shù)據(jù)結(jié)構(gòu)與算法如果你想進(jìn)入大廠的話,我推薦你在學(xué)習(xí)完基礎(chǔ)或者多線程之后,就開始每天抽出一點(diǎn)時間來學(xué)習(xí)算法和數(shù)據(jù)結(jié)構(gòu)。 我自己總結(jié)的Java學(xué)習(xí)的系統(tǒng)知識點(diǎn)以及面試問題,已經(jīng)開源,目前已經(jīng) 35k+ Star。會一直完善下去,歡迎建議和指導(dǎo),同時也歡迎Star: https://...

    yanest 評論0 收藏0

發(fā)表評論

0條評論

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