千家信息网

从零开始单排学设计模式「简单工厂设计模式」黑铁 III

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,阅读本文大概需要 2 分钟。本篇是设计模式系列的第二篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统。所以现在打算重写,加上距离现在也有一段时间了,也算是
千家信息网最后更新 2024年09月21日从零开始单排学设计模式「简单工厂设计模式」黑铁 III


阅读本文大概需要 2 分钟。


本篇是设计模式系列的第二篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统。所以现在打算重写,加上距离现在也有一段时间了,也算是自己的一个回顾吧!


学而时习之,不亦说乎。


推荐阅读:

从零开始单排学设计模式「UML类图」定级赛


目前段位: 黑铁 III


cdn.xitu.io/2019/2/14/168eb35943726dd3?w=568&h=291&f=jpeg&s=7582">


Let's Go!


前言


设计模式不是语法,是一种巧妙的写法,能把程序变的更加灵活。架构模式比设计模式大,架构模式是战略,而设计模式是战术。


设计模式分为3大类型:创建型,行为型,结构型,总共有23种。


简单工厂模式


简单工厂模式设计模式属于创建型设计模式,但不属于23种设计模式范围内,属于23种设计模式中工厂方法的入门模式,又叫静态工厂方法模式。


简单工厂模式是一个工厂对象决定创建出哪一种产品类的实例。它的好处是隐藏对象创建,不用依赖对象,可以随意更换对象。


在工厂模式中,工厂类中的所有方法返回同一个抽象产品类,代码的升级和扩展只需要在这个工厂类中注入新的功能方法,返回抽象产品类即可,或是另外写接口,将这个抽象产品类强制转换成这个接口,让具体产品类去实现。


业务需求


如果让你设计一个简单的计算器,实现两位数的简单加减乘除运算,你会怎么设计呢?


代码实现


刚接到需求的你,绝对会发现,需求是如此so easy(很容易),刷刷刷的就完成了任务。


实现思路很简单,一个运算类,用来计算结果的,一个计算器类,用来实现交互并接收参数的。


写完的代码如下


我们来运行一遍,看下结果

是不是很简单,哈哈,我真是个天才(自恋一下),写完之后看着自己写的代码,总觉得似乎不妥。


Java的特点是面向对象,而面向对象的三大特征是封装、继承和多态。我这里好像只用到了封装,将运算类进行一个简单封装,但是继承和多态却没有体现出来.....要是这样提交代码,被leader(领导)看到那岂不是要被拖出去枪毙,不行,还得再改改。


再次改版之后运算类Operation代码如下

(PS:这里仅仅是为了方便所以声明的是内部类,实际开发类似的程序时不要这样写,因为如果程序变复杂之后,这种编写方式不利于维护)


新创建了一个简单工厂类,用于实现业务逻辑。

计算器类改动不大

来试试新版的计算器,看一下结果

这样提交代码问题应该不大了。


新版的代码中,你只需要输入运算符号,工厂就实例化出合适的对象,通过多态,返回父类的方式实现了计算器的结果。同时,如果后续需要对程序维护,如要维护加法类,那么只需要提供新增方法的代码即可,不需要全部代码都提供,提高了整个项目的安全性。


简单工厂模式UML类图



总结


工厂(Factory):用一个单独的类来做这个类创造实例的过程,这就是工厂。


简单工厂模式解决的就是对象创建问题。


当我们已知的某些条件后,对类的选择,而这些类都是同一父类的子类,那么我们就可以使用简单工厂模式。





往期精彩回顾

房东:你敢申报,我就涨房租!京东取消年终奖!

一千行MySQL详细学习笔记(值得学习与收藏)

你女朋友是高可用么?

在Java中如何优雅地判空

最近整个业内状态不太好,注意提防一些公司的小九九!

Java爬取并下载酷狗TOP500歌曲

如何计算服务器能够承受多大的pv?

程序员们,别再学习框架了!

专科程序员与本科程序员之间有什么区别?

程序员的一天是怎样过的?

从 0 开始手写一个Tomcat,7 步搞定!


欢迎关注我的公众号「程序员的成长之路」,阅读更多精彩!


模式 工厂 设计 设计模式 代码 程序 对象 品类 方法 程序员 计算器 运算 结果 多态 实例 需求 学习 封装 精彩 不大 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 苏州代驾软件开发 软件开发平台哪个好用 服务器管理与服务器 长春软件开发多少钱 自然灾害数据库规范标准 网络安全一流学院建设 网络技术电子教案 c http服务器 合肥世纪君诚网络技术 数据库系统安全性的三个层次 中国网络安全专业相关的公司排名 图形图像软件开发实践 赤峰学院巴林格斯尔数据库建设 鼎维软件开发有限公司 吉林手机软件开发报价 天象互动网络技术有限公司 计算机软件开发技术基础 SAM 数据库包含的内容有哪些 大学软件开发干事面试 政务云网络安全监督检查 陕西速畅华网络技术有限公司 网络安全单幅漫画作品 美多啦互联网科技 大学的网络技术有前途吗 成都net软件开发定制费用 软件开发联络员工作职责 SAM 数据库包含的内容有哪些 奉贤区创新软件开发质量 青海云博软件开发有限公司 华为网络安全技能鉴定答案
0