3分鐘幫你理解常用的5種設(shè)計模式
作為一個合格的程序員你一定聽說過設(shè)計模式,設(shè)計模式有很多種,不用精通所有,至少得對常見的幾種融會貫通。設(shè)計模式就相當(dāng)于數(shù)學(xué)中的幾何定理,計算公式,掌握了它就可以直接代入。
工廠模式
這是一個最基礎(chǔ)的設(shè)計模式,也是最常用的設(shè)計模式,它有簡單工廠模式,工廠模式,抽象工廠模式。各有各的優(yōu)缺點(diǎn)。
故名思意,它就是一個加工廠,不同于現(xiàn)實的是,此處生產(chǎn)的不是生活用品,而是我們面向?qū)ο缶幊讨凶钪匾膶ο蟆9S模式比簡單工廠模式更彈性化,遵循了開發(fā)-封閉原則。
抽象工廠就像現(xiàn)實中的工廠一樣,好處大家都知道,可以批量生產(chǎn)與定制,因為有不一樣的模具,就可以生產(chǎn)出大家需要的各種類型產(chǎn)品。
軟件開發(fā)中,我們更關(guān)注的是使用對象的方法,至于如何創(chuàng)建對象我們并不關(guān)心,抽象工廠只要定制我們所需的產(chǎn)品功能接口,然后讓工廠實現(xiàn)接口生產(chǎn)對象即可。
單例模式
這是一個非常簡單的模式,只包含了一個類,重點(diǎn)要管理單例實例的創(chuàng)建,一般為了避免使用者錯誤創(chuàng)建多余的對象,單例的構(gòu)造函數(shù)和析構(gòu)函數(shù)聲明為私有函數(shù)。多種單例如果有依賴關(guān)系,就要仔細(xì)處理構(gòu)建順序。它有幾個優(yōu)點(diǎn),使用簡單,可以避免使用全局變量,隱藏對象的構(gòu)建細(xì)節(jié),避免多次構(gòu)建容易引起的錯誤??傊?,使用它不要急于一時的需求,因為如果將某類設(shè)計為單例就限制了可擴(kuò)展性,也會形成在各種可以隨意引用的一種趨向,不過這正也是它的便利之處。
裝飾器模式
人靠衣裝馬靠鞍,好的衣服可以提升一個人的氣質(zhì),但不會改變外貌與功能,這就是裝飾器模式,通過裝飾一個對象讓它更強(qiáng)大卻不會改變它的本質(zhì)。
舉一個軟件開發(fā)中的例子,比如你們已經(jīng)做好一個圖片傳送功能,也經(jīng)過了測試和線上測試這個功能很完美沒毛病,可是突然出現(xiàn)了一個新的需求,想要發(fā)送圖片時,還能語音提醒,你們怎樣在不影響原有的功能情況下實現(xiàn)它呢,現(xiàn)在就可以使用裝飾器,也就是給圖片發(fā)送類裝飾一個語音功能。
適配器模式
適配器是什么?就比如耳機(jī),它可以連接在你的手機(jī)上也可以連上別人的手機(jī),電腦也可以,它就是一種適配器。
程序員們幾乎不可能離開數(shù)據(jù)庫去單獨(dú)開發(fā)一款應(yīng)用,所以選擇什么數(shù)據(jù)庫是最需要關(guān)心的事情,一旦選擇錯誤,后期在性能上就會遇見很多瓶頸,適配器模式可以讓程序員們在不用修改或者改很少代碼的情況下進(jìn)行數(shù)據(jù)庫的隨意切換。
第一步要定義好適配器接口,接著讓各種數(shù)據(jù)庫實現(xiàn)我們定義好的接口,在代碼里用定義好的方法,當(dāng)你想要切換數(shù)據(jù)庫時,將該數(shù)據(jù)庫實現(xiàn)對應(yīng)接口的方法,就可以做到無縫連接啦。
策略模式
策略就是實現(xiàn)目標(biāo)方案的集合,它們都是用來實現(xiàn)一件事情的。
在軟件開發(fā)中,一個對象可以對不同場景使用不同的策略去實現(xiàn)同一個功能,比如在學(xué)習(xí)中老師會制定一個本學(xué)期期末目標(biāo)是多少,但是每個同學(xué)怎樣去完成它這個過程都是不一樣的,但是結(jié)果是一樣的。
某寶首頁的千人千面也是策略模式,都顯示了商品,但面對不同的人不同的喜好,商品就是不一樣的,這就是由策略決定的。
總結(jié)
設(shè)計模式一定源于生活,其實,萬物都是來源于生活,但經(jīng)過我們的學(xué)習(xí)提煉之后,它便高于生活。設(shè)計模式可以幫助你解決大部分問題,使用它會讓你的代碼看起來更加清晰,有條理。