封装工厂类创建BottomNavigationBar的addItem

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏量子位

干货 | 如何写一个更好的Python函数?

《Writing Idiomatic Python》一书的作者在Medium上发表了一篇文章,给出了6个建议。

872
来自专栏皮皮之路

【JDK1.8】Java 8源码阅读汇总

3727
来自专栏斑斓

编程修炼 | Scala亮瞎Java的眼(二)

继续上一期的话题,介绍Scala有别于Java的特性。说些题外话,当我推荐Scala时,提出质疑最多的往往不是Java程序员,而是负责团队的管理者,尤其是略懂技...

3665
来自专栏磐创AI技术团队的专栏

干货 | 如何写一个更好的Python函数?

《Writing Idiomatic Python》一书的作者在Medium上发表了一篇文章,给出了6个建议。

731
来自专栏带你撸出一手好代码

从PHP代码的细节说起

因为一个BUG, 我在一个摇摇欲坠,几乎碰一下就会散架的项目中某一个角落中发现下面这样一段代码 ? 这段程序与那个BUG有密切的关系。 我来回反复的捉摸这段代码...

4137
来自专栏小樱的经验随笔

51Nod 1182 完美字符串(字符串处理 贪心 Facebook Hacker Cup选拔)

1182 完美字符串 ?             题目来源:                         Facebook Hacker Cup选拔    ...

2897
来自专栏ACM算法日常

I Hate It!(线段树-超详细~)- HDU 1754

很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。 这让很多学生很反感。 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求...

822
来自专栏编程

手把手教你半个小时用python语言编程出你的第一个程序

学习目标 知道有序的软件开发过程的步骤。 了解遵循输入、处理、输出(IPO)模式的程序,并能够以简单的方式修改它们。 了解构成有效Python标识符和表达式的规...

3495
来自专栏Crossin的编程教室

【Python 第19课】 函数

数学上的函数,是指给定一个输入,就会有唯一输出的一种对应关系。编程语言里的函数跟这个意思差不多,但也有不同。函数就是一块语句,这块语句有个名字,你可以在需要时反...

3017
来自专栏做全栈攻城狮

电脑小白学习软件开发(八)-复杂数据类型介绍使用,枚举,数组

枚举表示的是:限定只能包括列出来的值。我们这里以星期来举例子。顾名思义,星期只能包括星期一到星期日。用代码来表示下。

984

扫码关注云+社区