設計模式是前輩們用經驗總結的可複用的,能夠解決一系列特定問題的一種編程設計思路,并不是語法規定,而是一種解決方案。
由GOF四人組收錄了23種設計模式,其中創建型最常見的就是工廠模式(主要是用來管理和創建實例),實際應該隻有工廠和抽象工廠兩種模式,但是還有一個針對工廠的簡化版本簡單工廠模式,雖然違反了開閉原則(即對擴展開放,對修改關閉的設計原則),但是在特定狀況下,簡單工廠也有其優勢的地方。
設計模式的三種工廠模式分别是:
簡單工廠模式:
角色:工廠角色,抽象産品角色,具體産品角色。
創建型,特點是由一個工廠決定了産品類的實例。
工廠模式:
角色:抽象工廠角色,抽象産品角色,具體産品角色。
創建型,特點是盡管每個産品都要有一個相應的工廠類,但是不會對整體代碼結構進行修改。
抽象工廠模式:
角色:抽象工廠角色,抽象産品角色,具體産品角色。
創建型,特點将共同部分封裝在抽象類中,不同部分則由子類實現,同樣不會對整體結構進行修改。
簡單工廠模式上面那一大串說實話有點不說人話,本質上這三種模式都是為了解決創建實例的問題,因為創建實例是在是太麻煩了。
假設我有很多的類,但是在這個場景下我隻需要其中幾個,而且還是根據需求的不同随時變化,那麼我就需要一個能夠随時給我相應需求類的實例的一個方法。
那麼簡單工廠就誕生了。
其簡單的構造确解決了很多問題,我能随心所欲的創建自己想要的實例,并且我不用去擔心實例的創建過程,我隻需要傳入參數,就能獲得對象并使用其方法。
但需要注意的是,如果需要新增蘋果手機制造,那麼就要修個工廠類,如果頻繁的修改業務對于整個系統的維護将是一場災難。
那麼有沒有解決的方法呢?
工廠模式
那必然就是工廠模式了,相較于簡單工廠來說,工廠模式将産品和工廠一一對應,而把所有的工廠相同部分抽象的集合到一個超級工廠接口中去,那麼所有工廠都是這個超級工廠的子類,需要實現工廠模式的規範。
這下來說雖然需要對調用者(客戶端)有一定的調整,但是對于整體的結構來說,不管新增多少個産品,都不影響結構,比如要新增一個蘋果手機,那麼隻需要同時新增蘋果工廠(實現create)和蘋果手機即可。
這比簡單工廠模式有了一定的長進,但是如果此時不僅僅要生産手機了,還有平闆,那該怎麼辦?
诶,有辦法!
抽象工廠模式
抽象工廠模式則是将相同的部分抽象封裝了,就像手機和平闆不同的業務線給封裝了,但是還是同屬于一個品牌之下,那麼就相當于品牌下有兩個分支手機和平闆。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!