java中榨汁机的代码

编程入门 行业动态 更新时间:2024-10-26 06:32:25

java中<a href=https://www.elefans.com/category/jswz/34/1688972.html style=榨汁机的代码"/>

java中榨汁机的代码

/** * @Deion果汁机---工厂 * @Creatorjunjun(创建者) */publicclassJuiceFactory{

/** * 根据名称来生产不同的果汁 * @paramname * @return*/publicstaticIJuice createJuice(String name){ IJuice iJuice = null;

if(name.equals("apple")){

//苹果汁iJuice = newAppleJuice() ; }elseif(name.equals("orange")){

//桔子汁iJuice = newOrangeJuice() ; }

returniJuice ; }}

4、在 MainActivity 中使用

核心代码,其它的代码是布局有两个按钮和一个文本,并且添加点击事件,这里不贴代码了。

@OverridepublicvoidonClick(View view){

switch(view.getId()){

caseR.id.btn_create_apple:

//对使用者来说,屏蔽了具体的细节,我管你杂榨汁呢IJuice appleJuice = JuiceFactory.createJuice("apple") ; tv_show_result.setText(appleJuice.getName());

break;

caseR.id.btn_create_orange: IJuice orangeJuice = JuiceFactory.createJuice("orange") ; tv_show_result.setText(orangeJuice.getName());

break;

default:

break; } }}

5、运行结果看果

这样我们一个简单的工厂模式就完了,是不是很简单「所以才叫简单工厂模式吗 (*^__^*)」

三、从 Android 中看简单工厂

BitmapFactory

在 Android 中我们经常使用 Bitmap ,其实和 Bitmap 相关的 BitmapFactory 就是一个简单工厂模式

我们来看看 BitmapFactory 的方法

可以看到 BitmapFactory 分为两类,一类是普通原静态方法「红色框中」,第二类是 JNI 调用的方法「黄色框内」

其实从字面意思我们也可以看到 BitmapFactory 就是 Bitmap 的工厂就是用来生成 Bitmap 的

概括起来 BitmapFactory 生成 Bitmap 无非就是根据三种输入源「各个参数」

1、图片的路径

2、图片的二进制文件

3、图片的流

好我们现在就拿简单工厂模式来分析 BitmapFactory ,为什么说 BitmapFactory 是一个简单工厂模式

BitmapFactory UML 分析

通过前面的学习,我们知道简单工厂模式要有一个产品「抽象类」,具体产品「实现类」,还要有一个工厂,我们拿这三样对比 BitmapFactory 就可以了 ,我们看到是这样的

纳尼?这是简单工厂模式吗?怎么和简单工厂模式的结构匹配不上呢,话说我的产品接口呢?

这肯定是简单工厂模式,没看比我们前面的简单工厂模式结构还简单吗?*^__^*,还有谁 TM 说一定必须得有抽象产品这么一说「反正我没有说」,为什么呢?因为 BitmapFactory 很明确就是创建 bitmap 的「功能很单一」,这里的 bitmap 就是我的具体产品「只有这一个产品呀,你咬我呀」,我还需要抽象产品接口吗?肯定不需要了。

BitmapFactory 生成 Bitmap 流程

大概看一个 BitmapFactory 生成 Bitmap 的一个流程吧,这里以 decodeFile(String filePath) 为例来说明

上图已经很清楚的看到使用 BitmapFactory.decodeFile(String filePath) 生成一张 Bitmap 的过程了「最后是调用 JNI 来生成 Bitmap 的」,其它的方法过程都是类似,其实这一张图就是生成一张 Bitmap 的细节,而使用 BitmapFactory 就是把这些细节都屏蔽了,我管你杂生成的,我给你一个图片路径你给我生成一个 Bitmap 就好了

2、Executors 「它不是 Android 固有,Java 中就有」

我们对 Executors 应该不会陌生「这里不过多讲 Executors,只是感受一下简单工厂模式」,Executors 是用来创建线程池的,其它它也是一个工厂,我们来看看吧

我们来看看 Executors 的方法

在这里,我只截取了部分方法,我们可以看到 Executors 有一些创建缓存线程池等等一系列方法,并且其中还有一个线程工厂「图中红色框,从名字可以看出」

Executors 简单的 UML

上图是 Executors 简单的一个 UML 没有全部画出,大概意思基本上表明了,我们从图中可以看出,Executors 完全就是一个简单工厂模式,基本上符合我们简单工厂模式的结构,只不过多了几个接口和类而已「我们只看(1),(2),(3) 就完全符合简单工厂模式」,也就是我给你一些参数你给我创建我想要的线程池即可

四、简单工厂的优缺点

优点:

实现起来非常简单「不然叫毛个简单工厂呢」,也充分利用了多态机制

解耦「使调用端不再创建对象,而是交给工厂去创建」,并且对内部实现屏蔽「调用端不知道具体实现」

分工明确,并且能更好的体现出代码含义

缺点:

工厂静态方法无法继承

代码维护不容易,如果想要创建更多的具体实现的对象,需要大量修改工厂

违反开闭原则「对扩展开放,对修改关闭」,如果有一个新的对象要添加,那么就要修改工厂

以上就是对简单工厂模式的一个介绍,确实挺简单的

大家都在看

安卓巴士作为中国最大的安卓开发者社区,每月前往互联网重点城市举办线下技术沙龙,并长期招募嘉宾讲师及礼品赞助。

有合作意向请直接联系QQ

805941275 435399051返回搜狐,查看更多

更多推荐

java中榨汁机的代码

本文发布于:2024-02-12 18:49:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1688965.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:榨汁机   代码   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!