設計模式和反模式簡單介紹

作為一個資深開發(fā)人員,大家都應該聽說過設計模式(design pattern),但是不是所有的人都聽說過反模式(anti-pattern)。今天我們就來談談后者,何為反模式。

成都創(chuàng)新互聯(lián)公司是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設公司,自成立以來公司不斷探索創(chuàng)新,始終堅持為客戶提供滿意周到的服務,在本地打下了良好的口碑,在過去的十年時間我們累計服務了上千家以及全國政企客戶,如成都資質(zhì)代辦等企業(yè)單位,完善的項目管理流程,嚴格把控項目進度與質(zhì)量監(jiān)控加上過硬的技術實力獲得客戶的一致贊美。

談反模式之前當然先要談談何為設計模式,因為兩者是緊密聯(lián)系在一起的。從我個人的理解認為,設計模式是一種在前人的設計經(jīng)驗上總結出來的對于一些普遍存在的問題提供的通用的解決方案。這些設計模式已經(jīng)經(jīng)過了長時間的實際應用和驗證,被證實是有效可行的解決方案。通過使用設計模式,我們可以獲得以下優(yōu)勢:

1.       開發(fā)小組不需要重新設計解決方案來解決已經(jīng)被前人解決過的問題。如此可以節(jié)省很多設計開發(fā)時間。

2.       當開發(fā)小組討論設計的時候,使用設計模式可以使大家更好了理解問題所在和解決方案,而且對解決方案有一個比較統(tǒng)一的認知。

3.       設計模式本身已經(jīng)通過了大量的實際運用和驗證,其設計質(zhì)量和實用價值有很好的保證。

4.       設計模式本身有健全的文檔,可以一定程度上簡化撰寫開發(fā)文檔。


在開發(fā)過程中,使用設計模式對系統(tǒng)/軟件開發(fā)有很多其他的優(yōu)點,這里就不一一列舉了。一些常用的設計模式包括:單列模式,工廠模式,修飾模式,策略模式,代理模式等等。有興趣的朋友可以看下“四人幫”的設計模式這本書“Design Patterns: Elements of Reusable Object-Oriented Software,其他還有大量討論設計模式的書籍,比如“Head First Design Pattern”,  “The Design Patterns Java Workbook” 等等。


簡單的談完了設計模式,我們來談一下重點,什么是反模式。很多人對反模式有一個理解誤區(qū),有人認為反模式是由于將通常使用的設計模式用在了錯誤的地方,也有人認為反模式只是一種壞習慣。簡單的來說,反模式是指在對經(jīng)常面對的問題經(jīng)常使用的低效,不良,或者有待優(yōu)化的設計模式/方法。甚至,反模式也可以是一種錯誤的開發(fā)思想/理念。在這里我舉一個最簡單的例子:在面向?qū)ο笤O計/編程中,有一條很重要的原則, 單一責任原則(Single responsibility principle)。其中心思想就是對于一個模塊,或者一個類來說,這個模塊或者這個類應該只對系統(tǒng)/軟件的一個功能負責,而且該責任應該被該類完全封裝起來。當開發(fā)人員需要修改系統(tǒng)的某個功能,這個模塊/類是最主要的修改地方。相對應的一個反模式就是上帝類(God Class),通常來說,這個類里面控制了很多其他的類,同時也依賴其他很多類。整個類不光負責自己的主要單一功能,而且還負責了其他很多功能,包括一些輔助功能。很多維護老程序的開發(fā)人員們可能都遇過這種類,一個類里有幾千行的代碼,有很多功能,但是責任不明確單一。單元測試程序也變復雜無比。維護/修改這個類的時間要遠遠超出其他類的時間。很多時候,形成這種情況并不是開發(fā)人員故意的。很多情況下主要是由于隨著系統(tǒng)的年限,需求的變化,項目的資源壓力,項目組人員流動,系統(tǒng)結構的變化而導致某些原先小型的,符合單一原則類慢慢的變的臃腫起來。最后當這個類變成了維護的噩夢(特別是原先熟悉的開發(fā)人員離職后),重構該類就變成了一個不容易的工程。

作者華杰, 從事IT工作15年,做過程序員,首席軟件工程師,架構師,IT技術顧問,現(xiàn)為澳大利亞移民和邊境保護局Tech lead.

LinkedIn:http://au.linkedin.com/in/jie-hua-01021118
個人電子郵件:jhua04@outlook.com

文章標題:設計模式和反模式簡單介紹
分享地址:http://muchs.cn/article42/ihisec.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設、響應式網(wǎng)站建站公司、域名注冊做網(wǎng)站、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

猜你還喜歡下面的內(nèi)容

手機網(wǎng)站建設

標簽優(yōu)化知識

分類信息網(wǎng)站