一、工廠模式可以分為三類:
1)簡單工廠模式(Simple Factory)
2)工廠方法模式(Factory Method)
3)抽象工廠模式(Abstract Factory)
這三種模式從上到下逐步抽象,并且更具一般性。
二、它們之間的區別
★ ?工廠方法模式:
● ?一個抽象產品類,可以派生出多個具體產品類。
● ?一個抽象工廠類,可以派生出多個具體工廠類。
● ?每個具體工廠類只能創建一個具體產品類的實例。
★ ?抽象工廠模式:
● ?多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。
● ?一個抽象工廠類,可以派生出多個具體工廠類。
● ?每個具體工廠類可以創建多個具體產品類的實例。
★ ?區別:
● ?工廠方法模式只有一個抽象產品類,而抽象工廠模式有多個。
● ?工廠方法模式的具體工廠類只能創建一個具體產品類的實例,而抽象工廠模式可以創建多個。
兩者皆可。
三、具體的實現方式:
比如我要創建一個5個tab的底部導航頁的效果,我的代碼如下:
這樣寫很麻煩,addItem里面很多相似的代碼,代碼的可讀性和可維護性不是很高。
分析一下:
由于這里有很多相同的結構,我第一個想到的是通過工廠方法,寫一個工廠類,需要的時候就去生成這些item。閑話不說了,開干。
(一)第一步:寫一個工廠的接口(由于時間關系,我這個命名不是很規范),這里寫了三個抽象方法,分別是普通方式,list集合,map集合形式傳參數進來
(二)第二步:寫一個工廠類的實現類(由于時間關系,我這個命名不是很規范)
由于簡書復制代碼太麻煩,我就貼圖吧,這個更直觀,請各位見諒。
(三)第三步:寫一個工廠類的實現類,真正封裝new bottomNavigationBar.addItem(XXX)的邏輯
(四)第四步:寫一個通用的常量管理類,用于區分不同的類型。
(五)第五步:在代碼里面實現,有沒有發現比以前簡單多了。簡潔高效維護性強。
總結:就是這么簡單,有沒有學會呢?這里是不是標準的工廠模式,歡迎大神來指教,如果我的說法不正確的地方,歡迎大神提出意見。
附上引用庫地址:?BottomNavigationBar 的倉庫地址
本項目demo下載請點擊這里:
https://github.com/AweiLoveAndroid/CustomBottomNavigationBar