Android重拾设计模式系列——简单工厂模式
个人博客CoorChice,https://chenbingx.github.io/ ,最新文章将会首发CoorChice的博客,欢迎探索哦 !
同时,搜索微信公众号CoorChice
,或扫描文章末尾二维码,可以关注我的微信公众号。同期文章也将会优先推送到微信公众号中,以提醒您有新鲜文章出炉。
定义及实质
- 定义
提供一个创建对象实例的功能(接口),而客户调用时无须关心实现过程。属于创建型模式。 - 实质
选择实现。
模式图解
简单工厂模式UML图
解释:
从上图可以看出:
- Factory依赖了Api接口和两个接口的实现类;
- 而Client依赖Factory和Api接口;
- ImpA和ImpB是Api接口的不同实现;
Factory工厂类承担了对象实例的创建,而Client只需调用Factory提供的方法(通常是静态方法)就可以获取相应的对象实例,Client完全不清楚对象是如何创建的。
这种模式实现了用户和对象的解耦,当对象发生变化时,我们无须改动用户的调用,只需在Factory中修改或增加就可以。
//对象
public interface Api{public void doSomething();
}public ImpA implements Api{@Overridepublic void doSomthing(){System.out.println("这里是ImpA");}
}public ImpB implements Api{@Overridepublic void doSomthing(){System.out.println("这里是ImpB");}
}//Factory
public class ApiFactory{public static Api getApi(int type){Api api = null;if(type == 0){api = new ImpA();} else if(type == 1){api = new ImpB();}return api;}
}//Client
public class Client{Api api;public client(){//注意,这里用户并不知道它所获得的对象实例是怎么创建的。api = Factory.getApi(0);if(api != null){api.doSomthing();}}
}
简单工厂模式顺序图
结合上面代码来看。
模式优缺点
优势
- 封装:封装用户创建对象实例的过程。
- 解耦:使用户不用去关心对象实例的创建过程,并且依赖于抽象。
缺点
用户往往需要知道Factory中选择参数的意义。
Android重拾设计模式系列——简单工厂模式相关推荐
- 设计模式系列-简单工厂模式
工厂模式,首先看下Wikipedia的描述 Factory Pattern is "A factory is an object for creating other objects&quo ...
- 设计模式系列·抽象工厂模式
前言 以小说的笔法写的设计模式系列文章,你绝对看得懂![首发于公众号:"聊聊代码"] 设计模式系列·王小二需求历险记(一) 设计模式系列·王小二需求历险记(二) 设计模式系列·封装 ...
- C#设计模式(2)——简单工厂模式
一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式--简单工厂模式. 二.简单工厂 ...
- php的类图怎么生成_PHP设计模式之简单工厂模式
PHP设计模式之简单工厂模式 先从简单工厂入门,不管是面试还是被他人面试,在问到设计模式的时候,大多数人都会提到工厂模式.毫无疑问,工厂相关的几种模式在设计模式中是最出名的也是应用比较广泛的一种模式. ...
- 工厂模式 java场景_研磨设计模式之简单工厂模式(场景问题)
简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以还是需要好好掌握的,就当是对学习设计模式的热身运动吧.为了保持一致性,我们尽量按照学习其它模式的步骤来进行学习. 1 场景问题 ...
- .NET设计模式(1): 简单工厂模式
.NET设计模式(1): 简单工厂模式 最近一直在看设计模式,想把自己的学习笔记与大家分享一下,如果能帮助大家的话,我会非常高兴,同时也欢迎大家指出里面的不足.园子里其实关于此类文章已经很多了,如果d ...
- JS常用的设计模式(2)——简单工厂模式
JS常用的设计模式(2)--简单工厂模式 简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定 ...
- 设计模式之简单工厂模式(C#版)
设计模式之简单工厂模式(C#版) 简介 假设有个女朋友 总结 简介 我用最简洁而直接的方式来描述一下,什么是简单工厂模式.一句话就是,工厂类使用switch case语句返回特定类型. 下面,我们用一 ...
- 大牧絮叨设计模式:简单工厂模式
文章目录 1. 简单工厂模式概述 1.1.简单工厂模式核心组件 1.2.简单工厂模式优缺点 2.` Java`实现 公共父类定义 产品具体实现类 简单工厂定义 代码运行测试: 3. `Python`实 ...
- 设计模式之简单工厂模式(Java 实现)
设计模式之简单工厂模式(Java 实现) 本文首发于http://www.imooc.com/wiki/Designlesson/factory.html 简单工厂模式是平时开发过程中最常见的设计模式 ...
最新文章
- Mybatis注解开发(一对一)
- 蚂蚁金服SOFA开源负责人鲁直:不只是中间件,未来会开源更多
- python语言保留字的特点_python保留字及其说明
- labview嵌入c代码_LabVIEW是什么?与其他组态软件有何分别?
- .NET Interop.SHDocVw和MSHTML引用如何操作
- matlab实现振动弹簧的实时动画,Matlab实现振动弹簧的实时动画
- Excel批量自动填充行号
- Phoenix错误信息: Malformed connection url
- ARM与Intel芯片性能不严谨比较
- MATLAB数字图像处理系统——边缘检测
- 钰泰半导体ETA4034爆款OVP+OCP+NTC+OTP+FAULT五合一方案, 兼容BQ24314
- s8更新系统提示网络或服务器出错,S8决赛IG3:0夺冠,各大区服务器崩溃!IG夺冠为何会全网刷屏?...
- u盘中Trojan.Generic病毒
- Unity 工具之 获取当前所在城市的天气数据的封装(自动定位当前所在城市,天气数据可以获得多天天数据)
- matlab 野值剔除,一种基于多项式拟和的野值剔除方法与流程
- 常用的CSSreset
- 扩展欧几里德求逆元模板
- 预警html效果,预警电子邮件 HTML 模板的语法
- Python-项目实战-《外星人入侵》Pygame小游戏-阶段二:外星人来了
- 2010Asia Harbin Regional Contest----Seaside(HDU3665)