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

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

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

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

总结

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

    推荐阅读
  • sata设置ahci还是raid(IDEAHCIRAID三种硬盘模式有什么区别)

    IDE、AHCI、RAID三种硬盘模式有什么区别IDE模式IDE是表示硬盘的传输接口。IDE模式可以通过映射通吃SATA硬盘,由于无需加载驱动程序,它的兼容性能超强,适用WinXP和Win7/8系统。AHCI模式原生支持SATA硬盘,它的优势在于它能够将NCQ技术充分发挥作用,或者说AHCI是现有的SATA硬盘主控接口中,除了复杂的磁盘阵列模式之外,最能发挥SATA硬盘性能。Win7/8系统完美支持AHCI模式,对WinXP兼容性不佳。

  • 快递面单泄露事件获利3000万(快递业泄露个人信息调查)

    11月17日,圆通速递称“疑似有加盟网点个别员工与外部不法分子勾结,利用员工账号和第三方非法工具窃取运单信息,导致信息外泄。”但圆通的回应未明确指出“内鬼”外泄快递用户信息的规模及贩卖金额等情况。张某伙同高某多次发布购买、租用快递查询系统账号的信息,并以每天1000元的价格将得到的账号信息贩卖给河南籍男子马某。记者进一步调查发现,除了圆通,市面上其他快递公司也存在“内鬼”参与贩卖快递用户信息的现象。

  • 女人必吃的暖宫水果有哪些(哪些水果宫寒女人不宜多吃)

    女人必吃的暖宫水果有哪些女士可以吃的暖宫水果比较多,比如红枣、核桃、石榴、榴莲、桃子、芒果等,都属于温性水果。如果某些女性有宫寒体质,平时在饮食方面,除了需要多吃些暖宫的食物外,比如红豆、桂圆和阿姣、牛、羊肉外,还需要多吃些温性水果,也具有暖宫效果。生果多归入寒凉的。假如确实宫寒得话那将来要少吃这种水果了。

  • 职工带薪年休假取消的规定(带薪年休假的那些事)

    春节是合家团聚的好日子。第二种情况是劳动者依据《劳动合同法》第三十八条单方解除劳动合同,一旦劳动者据此解除劳动合同行为的理由成立,则劳动者无需提前通知解除,即用人单位由于其自身原因造成未安排当年度年休假的,用人单位应当支付劳动者当年度应休未休年休假的工资报酬。

  • 求助成语填空答案(找一找下列哪个成语用错了)

    成语是汉语文化的瑰宝,也是我国传统文化中的一大特色。众人皆说,成之于语,故成语。成语有固定的结构形式,一般都是4个字,也有6个字和8个字的。因此在日程的沟通和书写中,大家都非常喜欢使用成语。“鼎力相助”是一个敬辞,指的是别人对自己的大力帮助,一般都是用在请人帮助的时候,因此“我一定鼎力相助”是一句病句。在日常沟通交流中,除了“鼎力相助”,还有许多成语非常容易被错用。

  • 霜降是秋天还是冬天(你答对了吗)

    虽然我国跨纬度比较广,但是到了霜降的世界,就算是最炎热的城市不会让人感觉到热。纬度偏南的南方地区,平均气温多在16℃左右。东北北部、内蒙东部和西北大部平均气温已在0℃以下。霜降现象出现的时间在各地都有所不同,在我国也并不是每个地方都会出现。就全年霜日而言,青藏高原上的一些地方即使在夏季也有霜雪,年霜日都在200天以上,是我国霜日最多的地方。

  • 北京车辆长期不开还用年检吗(北京车辆长期不开还用年检吗现在)

    如果驾驶的车辆不是自己名下的,既可以通过拨打机动车检测场电话的方式预约车辆年检,也可以通过“交管12123”手机APP完成“备案非本人机动车”后进行网上预约。

  • 关于李贺的资料(李贺的简介)

    河南府福昌县昌谷乡人,祖籍陇西郡。唐朝中期浪漫主义诗人,与诗仙李白、李商隐称为“唐代三李”,后世称李昌谷。诗作想象极为丰富,引用神话传说,托古寓今,后人誉为“诗鬼”。李贺是继屈原、李白之后,中国文学史上又一位颇享盛誉的浪漫主义诗人,有“太白仙才,长吉鬼才”之说。著有《昌谷集》。

  • 监控录像怎么删除(监控录像删除方法)

    以下内容大家不妨参考一二希望能帮到您!监控录像怎么删除在电脑主页面找到监控软件,鼠标右击选择“属性”选项,找到文件所在。返回电脑桌面,双击打开“我的电脑”,找到储存监控录像的文件夹。点击进入文件夹,选择自己需要删除的文件,右键选择“删除”即可。

  • 干净短句暖心家人(送给家人暖心的祝福语)

    干净短句暖心家人吉祥如意掸浮尘,花开富贵到如今,金玉满堂爱子孙,福禄寿喜满乾坤,海屋添筹古来稀,年华筵寿童颜身!晚辈祝您健康、快乐!您是我尊敬的长辈,我永远感谢您的关怀,今日为您庆寿辰,衷心祝您福满门,寿无疆!福如东海、寿比南山;日月昌明、松鹤长春;笑口常开、天伦永享。爸爸,无论您在哪儿,那里就是我们最快乐和向往的地方。外婆,生日快乐。