成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

程序員經常說的「設計模式」到底是什么?

新聞 開發
很多人應該聽說過設計模式(Design pattern),又或多或少的看過或用過設計模式,但是實際用在開發過程中總有點心有余而力不足的感覺,先不談某種具體的模式,先來看看什么是設計模式。

當程序員說去「設計模式」時,你是否會一臉懵逼,到底什么是設計模式呢?

[[202715]]

很多人應該聽說過設計模式(Design pattern),又或多或少的看過或用過設計模式,但是實際用在開發過程中總有點心有余而力不足的感覺。那肯定是對設計模式的理解有少許偏差或者不夠深入。先不談某種具體的模式,先來看看什么是設計模式?

什么是設計模式?

設計模式是一套代碼設計「 經驗的總結 」。項目中「 合理的 」運用設計模式可以「 巧妙的解決很多問題 」。

經驗的總結:抱著「代碼虐我千百遍,我待代碼如初戀」的心態,最終得出來的「套路」。

[[202716]]

合理的:要對設計模式的使用場景有一定的認識后才使用,「不要濫用」。如:輸出一句“hello world”,非要強行給加上各種模式。

問:“為什么”,答:“總感覺少了模式!”。

[[202717]]

[[202718]]

巧妙的解決了很多問題:被廣泛應用的原因。

[[202719]]

為什么要提倡“Design Pattern呢?根本原因是為了代碼復用,增加可維護性。那么怎么才能實現代碼復用呢?

設計模式之六大原則

開閉原則(Open Close Principle)

1988年,勃蘭特·梅耶(Bertrand Meyer)在他的著作《面向對象軟件構造(Object Oriented Software Construction)》中提出了開閉原則,它的原文是這樣:“Software entities should be open for extension,but closed for modification”。

  • 意思:軟件模塊應該對擴展開放,對修改關閉。
  • 舉例:在程序需要進行新增功能的時候,不能去修改原有的代碼,而是新增代碼,實現一個熱插拔的效果(熱插拔:靈活的去除或添加功能,不影響到原有的功能)。
  • 目的:為了使程序的擴展性好,易于維護和升級。

里氏代換原則(Liskov Substitution Principle)

  • 意思:里氏代換原則是繼承復用的基石,只有當衍生類可以替換掉基類, 軟件單位的功能不受到影響時 ,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為。
  • 舉例:球類,原本是一種體育用品,它的衍生類有籃球、足球、排球、羽毛球等等,如果衍生類替換了基類的原本方法,如把體育用品改成了食用品(那么軟件單位的功能受到影響),就不符合里氏代換原則。
  • 目的:對實現抽象化的具體步驟的規范。

依賴倒轉原則(Dependence Inversion Principle)

  • 意思:針對接口編程,而不是針對實現編程。
  • 舉例:以計算機系統為例,無論主板、CPU、內存、硬件都是在針對接口設計的,如果針對實現來設計,內存就要對應到針對某個品牌的主板,那么會出現換內存需要把主板也換掉的尷尬。
  • 目的:降低模塊間的耦合。

接口隔離原則(Interface Segregation Principle)

  • 使用多個隔離的接口,比使用單個接口要好。
  • 舉例:比如:登錄,注冊時屬于用戶模塊的兩個接口,比寫成一個接口好。
  • 目的:提高程序設計靈活性。

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

1987年秋天由美國Northeastern University的Ian Holland提出,被UML的***之一[Booch]等普及。后來,因為在經典著作《 The Pragmatic Programmer》而廣為人知。

  • 意思:一個實體應當盡量少的與其他實體之間發生相互作用,使得系統功能模塊相對獨立。
  • 舉例:一個類公開的public屬性或方法越多,修改時涉及的面也就越大,變更引起的風險擴散也就越大。
  • 目的:降低類之間的耦合,減少對其他類的依賴。

單一職責原則( Single responsibility principle )

該原則由羅伯特·C·馬丁(Robert C. Martin)于《敏捷軟件開發:原則、模式和實踐》一書中給出的。馬丁表示此原則是基于 湯姆·狄馬克 (Tom DeMarco)和Meilir Page-Jones的著作中的 內聚性 原則發展出的。

  • 意思:一個類只負責一個功能領域中的相應職責,或者可以定義為:就一個類而言,應該只有一個引起它變化的原因。
  • 舉例:該原則意思簡單到不需要舉例!
  • 目的:類的復雜性降低,可讀性提高,可維護性提高。

[[202720]]

剛入行的時候,在想什么樣的代碼是好代碼?看到很多前輩的文字都說好的代碼要符合「高內聚,低耦合」,但是我聽到這樣的解釋,是這樣的

[[202721]]

而現在對設計模式有了一定程度上的學習,感覺懂了一些,小伙伴們你們學會了嗎?

高內聚,低耦合?

  • 內聚是從功能角度來度量模塊內的聯系,一個好的內聚模塊應當恰好做一件事。它描述的是模塊內的功能聯系;
  • 耦合是軟件結構中各模塊之間相互連接的一種度量,耦合強弱取決于模塊間接口的復雜程度、進入或訪問一個模塊的點以及通過接口的數據。
責任編輯:張燕妮 來源: 人人都是產品經理
相關推薦

2022-10-09 07:33:38

JavaSPI程序

2021-11-29 10:27:24

設計模式程序員

2020-10-21 10:54:07

物聯網商業技術

2020-11-06 17:49:38

程序員技術開發

2021-05-19 07:13:16

Thread-Per-設計模式

2022-10-08 00:00:00

Spring數據庫項目

2020-03-05 10:28:19

MySQLMRR磁盤讀

2011-04-27 09:30:48

企業架構

2013-03-29 13:15:32

程序員

2020-09-27 06:53:57

MavenCDNwrapper

2020-09-22 08:22:28

快充

2020-10-14 06:22:14

UWB技術感知

2010-11-01 01:25:36

Windows NT

2024-11-11 10:15:04

CPULinux系統

2009-06-09 22:11:44

JavaScriptObject

2011-05-23 09:43:24

2019-04-01 08:01:13

程序員996Github

2023-10-11 08:29:54

volatileJava原子性

2013-06-09 09:47:31

.NetPDBPDB文件

2021-09-03 09:12:09

Linux中斷軟件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品亚洲一区二区三区四区五区 | 四虎在线视频 | 精品在线一区 | 国产激情视频网站 | 亚洲国产精品一区二区三区 | 欧美日韩激情 | 久草在线 | xx视频在线观看 | 免费看黄色小视频 | 免费一级片 | 九七午夜剧场福利写真 | 玖玖视频免费 | 久久精品亚洲一区二区三区浴池 | 国内精品一区二区 | 毛片高清 | 成人中文网 | 亚洲网站在线观看 | 丁香综合 | 久草在线中文888 | 国产一区二区三区久久久久久久久 | 亚洲bt 欧美bt 日本bt | 欧美乱大交xxxxx另类电影 | 亚洲一区 | 先锋av资源在线 | 精品人伦一区二区三区蜜桃网站 | 国产精品一区二区久久精品爱微奶 | 综合久久亚洲 | 日本成人在线播放 | 日日操夜夜摸 | 日本精品一区二区三区在线观看视频 | 日韩一二区| 久久午夜电影 | 岛国av免费看 | 龙珠z在线观看 | 久久久久久久香蕉 | 国产一区久久精品 | 国产精品一区二区免费 | 精品久久九 | 国产区在线免费观看 | 国产成人精品一区二三区在线观看 | 成人深夜小视频 |