小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

設(shè)計模式-起航篇

 碼農(nóng)9527 2021-11-18

 前言

  設(shè)計模式其實就是前人們的在開發(fā)過程中總結(jié)出來的對特定問題的解決方案。設(shè)計模式和編程語言沒有必然的聯(lián)系,它的目的是解決代碼可復用性、可維護性、可擴展性、可讀性、穩(wěn)健性以及安全性。

  GOF-23種設(shè)計模式

  1994年,Erich Gamma、Richard Helm、Ralph Johnson與John Vlissides撰寫了Design Patterns:Elements of Reusable Object-Oriented software(設(shè)計模式可復用面向?qū)ο筌浖幕A(chǔ))這本書,書中介紹了23種設(shè)計模式,也是Java程序員口中常提的設(shè)計模式,但實際的設(shè)計模式遠超23種。那GOF又是什么?它是上面提到的四位作者的合稱(Gang of Four 四人幫)。

  面向?qū)ο缶幊毯兔嫦驅(qū)ο笤O(shè)計原則

  相信對設(shè)計模式有一定了解的老鐵肯定有聽過5種、6種和7種的版本。

  其實最開始的設(shè)計原則是5種,也叫SOLID原則,也是下列表格中前五種原則的英文首字母組合。

  而6種原則是在5種的基礎(chǔ)上增加了迪米特法則,也是現(xiàn)在絕大多數(shù)書中的所講的版本。

  7種則是在6種的基礎(chǔ)上增加了合成復用原則,但是7種存在一些爭議,到底是堅持6種還是7種就仁者見仁智者見智了。

設(shè)計原則名稱
定義

單一職責原則(Single Responsibility Principle, SRP)

一個類只負責一個功能領(lǐng)域中的相應(yīng)職責

開閉原則(Open-Closed Principle,

OCP)

軟件實體應(yīng)對擴展開放,對修改關(guān)閉,程序需要進行擴展時,不能修改源代碼,實現(xiàn)熱插拔效果

里氏代換原則(Liskov Substitution

Principle, LSP)

所有引用基類對象的地方能夠透明地使用其子類的對象

接口隔離原則(Interface Segregation Principle, ISP)

使用多個專門的接口,而不使用單一的總接口

依賴倒轉(zhuǎn)原則(Dependence Inversion Principle, DIP)

開閉原則的基礎(chǔ),面向接口編程,依賴抽象而不依賴具體

合成復用原則(Composite Reuse

Principle, CRP)

盡量使用對象組合,而不是繼承來達到復用的目的

迪米特法則(Law of Demeter, LoD)

一個實體應(yīng)當盡可能少地與其它實體發(fā)生相互作用

  學設(shè)計模式有什么用

  學設(shè)計模式的原因我覺得基本逃不開以下這四點:

  應(yīng)付面試(最直觀的點)

  為了炫技

  提升個人編碼內(nèi)功

  為了更好的理解開源框架設(shè)計思想

  ...

  GOF-23設(shè)計模式類型

  在GOF-23設(shè)計模式中,對23種設(shè)計模式進行了分類,分別為創(chuàng)建型、結(jié)構(gòu)型和行為型。

  創(chuàng)建型:強調(diào)的是對象創(chuàng)建的模式,而不是直接實例化對象。

  結(jié)構(gòu)型:關(guān)注類和對象的組合,使用繼承來組合接口并定義組合對象以獲得新功能的方法。說的再白一點就是通過組合類或?qū)ο笮纬尚碌臄?shù)據(jù)結(jié)構(gòu)去解決更為復雜的需求。

  行為型:關(guān)注對象之間的通信。

  講到這里,肯定有人會說23種設(shè)計模式到底是哪23種。別急,下面就給大家附上圖。

  以上所介紹的內(nèi)容大家也都可以在wiki百科中找到,地址如下:

  地址:

  https://en./wiki/Design_Patterns

  總結(jié)

  好了,本文到此也就結(jié)束了,最后咱們來一個總結(jié)回顧下上面的知識點。

  通過本篇文章我們可以學到如下幾點:

  什么是設(shè)計模式

  什么是GOF-23設(shè)計模式

  面向?qū)ο缶幊毯兔嫦驅(qū)ο笤O(shè)計原則

  學設(shè)計模式有什么用

  GOF-23設(shè)計模式種類劃分

  最后再給大家多提一嘴,Java設(shè)計模式也是指的GOF-23設(shè)計模式,但是這種叫法是不對的。靜態(tài)語言和動態(tài)語言以及各種語言的特性,并不是所有的設(shè)計模式跨語言使用都是合適的,有些設(shè)計模式剛誕生的時候是跟作者當時所用的語言有一些關(guān)聯(lián),但是換到其它語言也許會有其它的解決方案,這一點也是大家需要注意的。

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多