学习
实践
活动
工具
TVP
写文章

Android开发需要掌握的设计模式——工厂模式

我们的态度是:每天进步一点点,理想终会被实现。

1

前言

Android中我们经常要使用的设计模式,我都会在接下来的几篇文章中为大家总结出来,比如:单例模式、观察者模式、代理模式以及包括上一篇的责任链模式等设计模式,主要讲解的方式通过理论简单例子实际项目

设计模式之工厂模式

定义

工厂模式概念?

简单一句话:实例化对象,用工厂方法代替New方式的一种模式。

工厂模式分为两种:

工厂方法模式、抽象工厂模式

工厂模式:

抽象工厂模式:

工厂方法模式和抽象工厂模式区别:

1.抽象工厂模式是工厂方法模式的扩展

2.工厂方法模式一般只有一种类型的产品,抽象工厂模式可以有多种类型的产品。

工厂模式适用于那些场景

适用场景:

具有很多同类型的对象创建

不可预见创建哪种实例

便于同类型扩展

低耦合

简单demo

工厂方法模式:

例如:超市有很多种类的水果:西瓜、橘子、甘蔗,我们把这些水果当成一个工厂。

抽象一个水果类,创建抽象方法来获取水果单价:

2.让这些水果都继承水果类:

3.创建工厂工厂类管理水果:

3.当我们收银员去扫描水果的时候就获取价格:

运行结果:

通过水果工厂去获取对应水果的对象,最后获得水果的价格。工厂模式就避免了创建对象,由工厂方法代替,这种方法扩展性也好,还有更多的水果只需要再工厂里面添加if else即可。

这就是我们的工厂方法模式。

需要提一点我们的工厂类里面还可以通过反射的方式获取水果对象:

运行结果:

抽象工厂模式:

修改下场景,现在我们的很多的水果都是不一定是当季节水果,很多有可能是大棚种植,我们就将其分类为:季节水果、大棚水果

1.既然我们的水果有当季和大棚之分,我们就抽取水果种类的接口:

桃子水果

橘子水果

2.创建季节水果,实现水果类

当季橘子

大棚橘子

当季桃子:

大棚桃子

3.创建季节工厂抽象类:

4.创建季节工厂实现类:

当季工厂:

大棚工厂:

5.我们的季节工厂已经创建,我们只需要去对应季节去获取对应的水果种类:

运行结果:

这样我们一个完整的抽象工厂模式就创建好了,加入有多个季节水果、很多种类水果,只需要添加对应的实现类,然后在工厂中添加对应的水果种类即可。可扩展性非常好,低耦合。

Android项目中

现在我们当前流行的APP,一个Activity中有很多个模块,一般都是由ViewPager+Fragment来实现,那么我们的可以这些Fragment看成一个类,创建一个FragmentFactory工厂来管理。

1.创建Fragment工厂类

2.Activity中来获取Fragment

values的array中:

Activity中布局:

Fragment代码:

Fragment中布局就一个TextView。

最后运行效果:

一句话总结

工厂模式在Android中的应用还是很多的,但这都要和实际的项目结合起来使用,我们要结合需求去分析,是否适合使用工厂模式。

温馨提示:

另外关注公众号,还有一些个人收藏的视频:

回复“Android” ,获取Android视频链接。

回复“Java” ,获取Java视频链接。

回复“Python” ,获取Python视频链接等等。

关注我,一定会有意想不到的东西等你:

每天专注分享Android干货

备注:程序圈LT

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180615G083WV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券