我们的态度是:每天进步一点点,理想终会被实现。
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
领取专属 10元无门槛券
私享最新 技术干货