高考考试网
当前位置: 首页 高考资讯

23种常用的设计模式(简单学设计模式)

时间:2023-05-24 作者: 小编 阅读量: 4 栏目名: 高考资讯

要说23种设计模式中,工厂模式无疑是最简单的设计模式之一。代替,而不是用工厂模式来消除“if……else……”。事实上这样的实现是不好的实现,虽然能够完成功能需求。还是没有减少,还多创建了一个工厂类,这样真的有必要吗?

要说23种设计模式中,工厂模式无疑是最简单的设计模式之一。虽然工厂模式简单,基本上刚入门的新手都能看得懂,但是能用好也是不简单的,或者说是能够结合业务在实际的项目中使用是非常不易的,因为在实际的开发中,可以使用工厂模式的地方很容易被“if……else……”代替,而不是用工厂模式来消除“if……else……”。举个例子——

假如有一个自动生产饮料果汁的售货机,会根据客户输入的果汁类型来生产果汁给客户的场景,相信大部分人的代码都如下(其中FruitJuice是果汁的父类,这里分别实现了苹果汁AppleJuice、柠檬汁LemonJuice以及菠萝汁PineappleJuice)

输入“LemonJuice”

这样实现是一点问题都没有的,输入“LemonJuice”然后就能得到柠檬汁,完成能够满足当前的需求;

但是如果我们再对未来业务的考虑,这样实现真的好吗?

事实上这样的实现是不好的实现,虽然能够完成功能需求。这里简单指出其实现不足,一是,如果其他类似的场景也是需要生产果汁,但是果汁的种类跟这边的场景不一样,无法重构成一个方法,是不是每次进行实例化前再一次这样“if……else…… ”去判断再实例化对应的实现类;二是从业务角度来说,果汁种类很多,未来要添加新的果汁类型的话,需要再次在业务的代码中添加“if……else……”,如果项目中类似要创建对应果汁类型的代码有多个地方,那必须修改多个地方,不利于维护和扩展。

那我们应该如何优化?

首先我们创建一个类FruitJuiceFactory,专门用来生产果汁的,所有的果汁生产都经过此类的方法来获得

最后业务代码改造成如下:

然后我们对比一下改造前后的差别:

可以看出改造后的代码简洁了不少,但有人可能有疑问,这不是把创建“果汁”对象的“if……else……”代码迁移到FruitJuiceFactory里面去了,代码量和“if……else……”还是没有减少,还多创建了一个工厂类,这样真的有必要吗?

答案是:真的有必要!

首先,如果是在实际的项目中,类似使用“果汁”对象的代码有可能不止这一处,如果我们将生产果汁对象的方法都集中到工厂类中,封装统一使用工厂类来创建管理,这样才符合我们的设计原则,就不用类似再开一个新的果汁饮料实体店,然后再“if……else……”再去判断实现一遍,如果这样代码冗余很多,很不利于维护。

其次,软件开发有一个亘古不变的真理,那就是change(变化),不管一个软件设计得有多好,总需要成长和改变的,否则,软件就会“死亡”!因此,一个软件好的设计原则是,找出软件中可以能需要变化的部分,将它们封装独立出来,不要和那些不需要变化的代码混在一起。在上述的例子中,从业务发展来说,我们明显能够了解到果汁的实现类会有变化,有可能实现类越来越多,比如加入葡萄汁、橙汁等,这个时候我们只需要在变化的工厂类中添加新的实现就好,而不用在一些不需要变动的业务代码去进行改动,而这里的较大可能变化就是果汁实现类,不变的是业务逻辑,所以把果汁对象的创建过程封装起来是一个较好的设计实现。

总结

工厂模式简大部分的应用场景跟上述例子类似,就是传入一个具有识别性的参数,然后产生对应的实现类对象,在实际开发中可能会有一些变种,但核心的思想就是通过一个统一的类方法去管理某类型下对象的创建,实现软件中的“变化”和“不变”高内聚低耦合。

    推荐阅读
  • 柠檬清新小蛋糕的做法(柠檬清新小蛋糕如何做)

    柠檬清新小蛋糕的做法柠檬洗净,擦些柠檬皮茸下来备用。低粉提前过筛两次备用。黄油隔水加热融化。打至颜色泛白,稍浓稠。加入融化的黄油快速搅拌均匀。蛋白加盐打至粗跑。加剩余糖打至中性发泡。取1/3蛋白霜与蛋黄糊混合均匀。倒回剩余蛋白霜中,翻拌均匀。蛋白糖霜中所有材料混合。倒入纸杯中,180度烤25分钟。取晾凉的柠檬小蛋糕,在表面抹薄薄一层糖霜。在用五彩巧克力豆或是糖浸橙皮装饰,放网架上室温风干即可。

  • 关于三八节女神节(三八节女神节有多少奢侈的词语为女人而造)

    关于三八节女神节?在多情少男眼中,女人就是美;在夫妻生活中,女人就是家;在诗人眼中,女人就是诗;在学者眼中,女人就是读不完写不尽的书,今天小编就来说说关于关于三八节女神节?关于三八节女神节自从有人类以来,多少人在赞美女人,多少人在追求女人,多少在研究女人,也有多少在咒骂女人......女人究竟是什么?一般情况下,女子十五岁可以许婚,结发上簪,二十而嫁。埋葬心爱的女人称之为“葬玉埋香”。

  • 什么是高情商女生(高情商女生有什么特征)

    什么是高情商女生说话别说透,点到为止,讲话,讲究点到为止,只要把意思说到就可以,俗话说:“说七分,留三分”,不要把任何事情都说得那么开,说得那么透。要给自己留有余地,给他人留脸面。就事论事,幽默处理,有人做错了事,不要用情绪性的方式加以批评,特别要注意就事论事,避免评价了别人的人格、个性与家庭教养。批评时能提出有建设性解决方案就再好不过了。

  • 五句话打一成语四个字(五句话 打一四字成语)

    “言”和“语”都是表示“话”的意思,“三”加上“两”就是“五”,这个谜语要根据数字来进行加减法的拆分,再将关键字用同样含义文字来替代,就得出最终答案。

  • 春风已过的对联(燕遣春风裁翠柳)

    春天来了,说起诗词对联,必定要题的就是春风了。这无形的春风,让诗人给与了有形、有意、有境的风情。不论是“羌笛何须怨杨柳,春风不度玉门关”,“春风不相识,何事入罗帏”,还是“春风又绿江南岸,明月何时照我还”,“野火烧不尽,春风吹又生”。我们一次次的重温这种经典,还是回味无穷。今天这里出了10句关于春风的对联,来邀请各位对下联,可以发挥想象,展现大家的对于对联的热爱。为传播中国古典文化尽一点微薄之力!

  • root权限获取教程不用电脑(root权限获取方法)

    接下来我们就一起去研究一下吧!root权限获取教程不用电脑下载“一键Root大师”,整个过程请保持联网,以便下载某些东西。下载完成后打开,如果有请求权限的点击允许,没有当然更好。点击如果出现“需要安装Root授权管理”,那么就要联着网等待它下载,点击。安装好以后会出现“正在获取root”字样,耐心等一下吧。重启手机就可以了,可以管理开机自启程序和卸载无用软件了!

  • 电脑键盘打字时中英文如何切换(电脑键盘打字时中英文怎么切换)

    电脑键盘打字时中英文如何切换?首先,需要安装输入法,安装完毕之后按照输入法默认设置就可以;或者是您可以尝试使用键盘上的组合键调出输入法,一般会在右下角状态栏上显示当前的输入法;,我来为大家科普一下关于电脑键盘打字时中英文如何切换?下面希望有你要的答案,我们一起来看看吧!

  • ofo押金变成余额怎么退(Ofo要完退余额退押金流程来了)

    ofo押金变成余额怎么退Ofo的运营方东峡大通(北京)管理咨询有限公司前几日被媒体发现人去楼空,据中国执行公开信息网公示,ofo被列为20起案件的“被执行人”共涉及金额超过5360万元,资金链断裂已板上钉钉,无法否认。原创史人的出局,和支付宝分家,与滴滴打车合并的流产,诸多负面新闻证明了ofo与诸多小品牌共享一样,难逃破产的命运。后续将定期抽取有代表性的案件,由我来跟进处理,并直播打击假冒伪劣商品的全过程。

  • 抖音怎么推广 抖音怎么推广自己的店铺

    以抖音12.5.0为例,推广抖音的方法有:1、发布的视频需要具有创意,可以符合年轻人的喜好。抖音是由今日头条推出的一款短视频分享APP,于2016年9月上线,是一个专注于年轻人音乐短视频创作分享的社区平台。抖音应用人工智能技术为用户创造多样的玩法,用户可以通过这款软件选择歌曲,拍摄音乐短视频,形成自己的作品。也可以自己上传剪辑作品。

  • 3d立体12生肖头像微信头像(29张十二生肖微信头像)

    定制头像点击这里设计定制头像点击这里设计