偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

程序員經(jīng)常說(shuō)的「設(shè)計(jì)模式」到底是什么?

新聞 開發(fā)
很多人應(yīng)該聽說(shuō)過(guò)設(shè)計(jì)模式(Design pattern),又或多或少的看過(guò)或用過(guò)設(shè)計(jì)模式,但是實(shí)際用在開發(fā)過(guò)程中總有點(diǎn)心有余而力不足的感覺(jué),先不談某種具體的模式,先來(lái)看看什么是設(shè)計(jì)模式。

當(dāng)程序員說(shuō)去「設(shè)計(jì)模式」時(shí),你是否會(huì)一臉懵逼,到底什么是設(shè)計(jì)模式呢?

[[202715]]

很多人應(yīng)該聽說(shuō)過(guò)設(shè)計(jì)模式(Design pattern),又或多或少的看過(guò)或用過(guò)設(shè)計(jì)模式,但是實(shí)際用在開發(fā)過(guò)程中總有點(diǎn)心有余而力不足的感覺(jué)。那肯定是對(duì)設(shè)計(jì)模式的理解有少許偏差或者不夠深入。先不談某種具體的模式,先來(lái)看看什么是設(shè)計(jì)模式?

什么是設(shè)計(jì)模式?

設(shè)計(jì)模式是一套代碼設(shè)計(jì)「 經(jīng)驗(yàn)的總結(jié) 」。項(xiàng)目中「 合理的 」運(yùn)用設(shè)計(jì)模式可以「 巧妙的解決很多問(wèn)題 」。

經(jīng)驗(yàn)的總結(jié):抱著「代碼虐我千百遍,我待代碼如初戀」的心態(tài),最終得出來(lái)的「套路」。

[[202716]]

合理的:要對(duì)設(shè)計(jì)模式的使用場(chǎng)景有一定的認(rèn)識(shí)后才使用,「不要濫用」。如:輸出一句“hello world”,非要強(qiáng)行給加上各種模式。

問(wèn):“為什么”,答:“總感覺(jué)少了模式!”。

[[202717]]

[[202718]]

巧妙的解決了很多問(wèn)題:被廣泛應(yīng)用的原因。

[[202719]]

為什么要提倡“Design Pattern呢?根本原因是為了代碼復(fù)用,增加可維護(hù)性。那么怎么才能實(shí)現(xiàn)代碼復(fù)用呢?

設(shè)計(jì)模式之六大原則

開閉原則(Open Close Principle)

1988年,勃蘭特·梅耶(Bertrand Meyer)在他的著作《面向?qū)ο筌浖?gòu)造(Object Oriented Software Construction)》中提出了開閉原則,它的原文是這樣:“Software entities should be open for extension,but closed for modification”。

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

里氏代換原則(Liskov Substitution Principle)

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

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

  • 意思:針對(duì)接口編程,而不是針對(duì)實(shí)現(xiàn)編程。
  • 舉例:以計(jì)算機(jī)系統(tǒng)為例,無(wú)論主板、CPU、內(nèi)存、硬件都是在針對(duì)接口設(shè)計(jì)的,如果針對(duì)實(shí)現(xiàn)來(lái)設(shè)計(jì),內(nèi)存就要對(duì)應(yīng)到針對(duì)某個(gè)品牌的主板,那么會(huì)出現(xiàn)換內(nèi)存需要把主板也換掉的尷尬。
  • 目的:降低模塊間的耦合。

接口隔離原則(Interface Segregation Principle)

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

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

1987年秋天由美國(guó)Northeastern University的Ian Holland提出,被UML的***之一[Booch]等普及。后來(lái),因?yàn)樵诮?jīng)典著作《 The Pragmatic Programmer》而廣為人知。

  • 意思:一個(gè)實(shí)體應(yīng)當(dāng)盡量少的與其他實(shí)體之間發(fā)生相互作用,使得系統(tǒng)功能模塊相對(duì)獨(dú)立。
  • 舉例:一個(gè)類公開的public屬性或方法越多,修改時(shí)涉及的面也就越大,變更引起的風(fēng)險(xiǎn)擴(kuò)散也就越大。
  • 目的:降低類之間的耦合,減少對(duì)其他類的依賴。

單一職責(zé)原則( Single responsibility principle )

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

  • 意思:一個(gè)類只負(fù)責(zé)一個(gè)功能領(lǐng)域中的相應(yīng)職責(zé),或者可以定義為:就一個(gè)類而言,應(yīng)該只有一個(gè)引起它變化的原因。
  • 舉例:該原則意思簡(jiǎn)單到不需要舉例!
  • 目的:類的復(fù)雜性降低,可讀性提高,可維護(hù)性提高。

[[202720]]

剛?cè)胄械臅r(shí)候,在想什么樣的代碼是好代碼?看到很多前輩的文字都說(shuō)好的代碼要符合「高內(nèi)聚,低耦合」,但是我聽到這樣的解釋,是這樣的

[[202721]]

而現(xiàn)在對(duì)設(shè)計(jì)模式有了一定程度上的學(xué)習(xí),感覺(jué)懂了一些,小伙伴們你們學(xué)會(huì)了嗎?

高內(nèi)聚,低耦合?

  • 內(nèi)聚是從功能角度來(lái)度量模塊內(nèi)的聯(lián)系,一個(gè)好的內(nèi)聚模塊應(yīng)當(dāng)恰好做一件事。它描述的是模塊內(nèi)的功能聯(lián)系;
  • 耦合是軟件結(jié)構(gòu)中各模塊之間相互連接的一種度量,耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度、進(jìn)入或訪問(wèn)一個(gè)模塊的點(diǎn)以及通過(guò)接口的數(shù)據(jù)。
責(zé)任編輯:張燕妮 來(lái)源: 人人都是產(chǎn)品經(jīng)理
相關(guān)推薦

2022-10-09 07:33:38

JavaSPI程序

2021-11-29 10:27:24

設(shè)計(jì)模式程序員

2020-11-06 17:49:38

程序員技術(shù)開發(fā)

2020-10-21 10:54:07

物聯(lián)網(wǎng)商業(yè)技術(shù)

2021-05-19 07:13:16

Thread-Per-設(shè)計(jì)模式

2013-03-29 13:15:32

程序員

2020-03-05 10:28:19

MySQLMRR磁盤讀

2022-10-08 00:00:00

Spring數(shù)據(jù)庫(kù)項(xiàng)目

2011-04-27 09:30:48

企業(yè)架構(gòu)

2024-11-11 10:15:04

CPULinux系統(tǒng)

2020-09-27 06:53:57

MavenCDNwrapper

2020-10-14 06:22:14

UWB技術(shù)感知

2020-09-22 08:22:28

快充

2010-11-01 01:25:36

Windows NT

2011-05-23 09:43:24

2014-12-08 10:08:33

程序員

2014-12-08 09:44:01

程序員

2019-04-01 08:01:13

程序員996Github

2009-06-09 22:11:44

JavaScriptObject

2023-10-11 08:29:54

volatileJava原子性
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)