提到設計模式,很多人都會覺得老生常談,有些人覺得設計模式很有必要,有些人覺得設計模式沒那麼重要,那麼我們在工作中是否應該重視設計模式呢?我們是否應該將設計模式大量應用到我們的生產過程中呢?
如果你從未聽說過設計模式,我敢打賭你一定不是乙個合格程式設計師。這就好比乙個人說他自己是數學家,但是他連勾股定理都沒聽過,這怎麼可能?
工廠模式
這是乙個最基礎的設計模式,也是最常用的設計模式,這是乙個我們平時一直在使用,但卻不知道自己在使用的設計模式。
工廠模式故名思意就是乙個加工廠,不同於現實的是,這裡生產的不是衣服,皮鞋,褲子等,而是我們物件導向程式設計中最重要的物件。
現實中工廠的好處我們都知道,不僅可以批量生產,還可以批量定製,因為有著不同的模具,它可以生產出人們需要的各種型別的產品。
軟體開發中,我們更關注的是使用物件的方法,至於物件如何建立的,我們並不是很關心,因此,抽象工廠解決了我們的問題。我們只需要訂製我們需要的產品功能介面,然後讓工廠按照我們的介面,也就是實現介面生產物件即可。
通過這樣的呼叫,我們的產品如果有問題的話,可以隨時召回,可以隨時被工廠補丁修補,實現了產品的靈活擴充套件。
介面卡模式
現實中,我們經常給手機充電,而我們使用的就是電源介面卡,為什麼叫介面卡呢?因為它不僅可以給我們自己的手機充電,也可以給別人的手機充電,甚至還可以給其它用電裝置充電,因為它可以適應各種充電裝置,所以叫做介面卡。
軟體開發中,我們幾乎或者不可能離開資料庫而去開發一款應用,那麼選擇什麼資料庫是我們最需要關心的,因為如果選擇錯了,可能後期在效能上就會出現瓶頸,那麼有沒有一種辦法可以讓我們在不修改**,或者修改很少的**情況下進行資料庫的無縫切換呢?答案就是介面卡模式。
我們首先定義好介面卡介面,然後讓各種資料庫實現我們定義好的介面,我們在**中使用介面中定義的方法,這樣當我們想要切換資料庫的時候,只要將該資料庫實現對應介面的方法,我們就可以完成資料庫的適配,就可以無縫連線。
觀察者模式
觀察者模式,又叫做通知模式,是一種一對多的模式。現實中,當校長或者老師在台上發布乙個命令的時候,廣播喇叭就會將命令傳達給每個學生,學生們聽到命令的時候,都會有自己的反應,校長或者老師不必向學生乙個個傳達,因為廣播喇叭會把命令傳給學生,這裡廣播喇叭就是乙個觀察者,而老師和校長就是被觀察者,學生們就是被通知物件,因此觀察者模式也叫做發布訂閱模式。
在軟體開發中,比如我們的產品有這樣乙個功能,使用者下單支付成功之後,就會傳送一條簡訊通知使用者,如果之後希望不僅傳送簡訊,還需要傳送郵件,還需要語音通知,在這樣的情況下,我們就可以採用觀察者模式,我們將支付成功資訊放入到訊息佇列中,至於發簡訊還是發郵件,由各個業務模組訂閱訊息佇列自己處理。這樣在訂單模組裡面,就不需要乙個個通知簡訊模組,郵件模組了。
裝飾器模式
現實生活中,一般情況下乙個人換了一件衣服之後,我們依然可以認出他,衣服就是他的裝飾,說明裝飾並不影響乙個人的容貌,也就是不影響這個人的功能,但是通過穿著一件高檔外衣,卻可以提公升乙個人的氣質,這就是裝飾的作用,而裝飾器模式就是通過裝飾乙個物件而不改變物件來讓這個物件更強大。
舉乙個軟體開發中的案例,比如我們已經設計好乙個簡訊傳送功能,並且經過測試和線上測試這個功能是沒有任何問題的,但是現在有乙個新的需求,要求傳送簡訊的時候,還能語音提醒,我們如何能夠在不影響原有的功能情況下,實現這個功能呢,這個時候我們就可以使用裝飾器,也就是給短息傳送類裝飾乙個語音功能,讓它不僅可以傳送簡訊,此外還可以實現語音傳送的功能。
策略模式
策略故名思意就是實現目標方案的集合,簡單來說就是各種方法的集合,他們都是用來實現一件事情的。
軟體開發中,乙個物件對不同場景採用不同的策略去實現同乙個功能,就是策略方法,如果你聽說過多型,就會發現它和多型的定義很像,不同的是多型是不同物件對同一操作的不同的處理方法,而策略模式是同乙個物件對同乙個操作採用不同的策略進行處理操作。
比如,我們有乙個國慶7天遊的專案,起始點和目的地都是從北京到莫斯科,但是可以採用不同的策略,可以飛機,可以火車,可以自駕,同乙個夢想,不同的實現方式。
**首頁的千人千面也是策略模式,都是顯示商品,面對不同的人,顯示的就是不同的商品,這就是由策略決定的。
總結
如果你足夠細心的話,軟體開發中的設計模式並不是憑空產生的,它一定是**於生活,其實,任何知識的產生都是**於生活,只不過我們經過學習提煉之後,將它高於生活。
設計模式不是萬能的,它並不能幫助你解決所有問題,但是它可以幫助你解決大部分問題,並且在編碼中使用設計模式的話,你會發現,你的**看起來會更加清晰,更加有條理。
學習設計模式,使用設計模式並不是最終的目的,我們的最終目的是無招勝有招,當你把所有的設計模式全忘記的時候,但是在編碼中卻能運用它們的時候,你才算沒白學設計模式。
VC 中經常使用的函式!
1 domodal 函式用來直接顯示有模式對話方塊,create 用於建立無模式對話方塊。3 得到hwnd函式 findwindow findwindowex hwnd hwnd findwindow t ieframe null if hwnd 4 cstudlg afxgetmainwnd af...
HTML中經常使用的單位
css3新增加的相對單位,相對於html的根元素,修改根元素可以調整所有字型大小,還可以避免字型大小逐層復合的連鎖反應,未經過調整的瀏覽器,16px 1em。主要用於螢幕適配布局,移動端使用比較廣泛。使用這種方式,只要根據不同螢幕設定不同的根元素即可使系統適配不同的螢幕。相對於當前物件內文字的尺寸來...
QTP中經常使用的VB語句
1.輸出語句msgbox 輸出需要返回的資料值,加上 表示原樣輸出 msgbox hello world msgbox hello world result msgbox hello world vbokonly,greeting msgbox hello world vbokonly,greeti...