封装工厂类创建BottomNavigationBar的addItem

简介: 一、工厂模式可以分为三类:1)简单工厂模式(Simple Factory)2)工厂方法模式(Factory Method)3)抽象工厂模式(Abstract Factory)这三种模式从上到下逐步抽象,并且更具一般性。

一、工厂模式可以分为三类:

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

相关文章
|
5月前
|
数据安全/隐私保护 流计算
可以创建一个自定义的`AssignerWithPeriodicWatermarks`实现类
可以创建一个自定义的`AssignerWithPeriodicWatermarks`实现类
69 2
|
设计模式 Java 数据库
JAVA设计模式2:工厂方法模式,将对象的实例化过程封装在子类
JAVA设计模式2:工厂方法模式,将对象的实例化过程封装在子类
|
Java 编译器
类 对象 封装
类 对象 封装
74 0
构建一个可复用的自定义BaseAdapter
本节给大家带来的是构建一个可复用的自定义BaseAdapter,我们每每涉及到ListView GridView等其他的Adapter控件,都需要自己另外写一个BaseAdapter类,这样显得非常麻烦, 又比如,我们想在一个界面显示两个ListView的话,我们也是需要些两个BaseAdapter。
102 0
|
JavaScript 前端开发
js对象的创建对象模式和继承模式(下)---继承模式
js对象的创建对象模式和继承模式(下)---继承模式
96 0
|
JavaScript 前端开发
js对象的创建对象模式和继承模式(上)---构建对象模式
js对象的创建对象模式和继承模式(上)---构建对象模式
131 0
|
Java
Java面向对象(1)--对象的创建使用类的实例化
Java面向对象(1)--对象的创建使用类的实例化
83 1
|
安全 Java 数据安全/隐私保护
|
Java 数据挖掘 C++
Qt使用自定义委托(QItemDelegate/QStyledItemDelegate)
Qt使用自定义委托(QItemDelegate/QStyledItemDelegate)
1114 0