首页 > 编程知识 正文

设计模式应用实例,至少两种设计模式的代码实现

时间:2023-05-05 03:57:08 阅读:53016 作者:667

摘要:很多人对设计模式抱有疑问或怀疑。 写代码需要使用设计模式吗? 使用设计模式的代码比没用好吗?

本文来自华为云社区《走近设计模式:写代码一定要用设计模式吗?》,原文作者:技术圣火传递者分享。

很多人对设计模式抱有疑问或怀疑:

写代码必须使用设计模式吗? 使用设计模式的代码比没用好吗? 为了解决第一个问题,需要研究什么是设计模式。 这包括了解设计模式产生的最初目的,以及设计模式是否能够解决软件问题等。 为了解决第二个问题,需要把握如何使用设计模式、何时何地使用哪个设计模式、何时应该使用、何时需要离开。

什么是设计模式?前几天面试候选人时问了这个问题。 ——“什么是设计模式? ”。 候选人回答说:“设计模式有单实例模式、观察者模式、代理模式……” 我没有打断他,还是问他对这几种模式的理解。 这不是我想问的,但我推测这样回答的人不少。

“设计模式”或“设计模式”只是设计上的模式,在此,设计是指http://www.Sina .

说到设计模式,有绕不过来的经典《设计模式:可复用面向对象软件的基础》。 除了设计模式之外,还有一个副标题——,它重用了面向对象软件的基础,限制了重用和面向对象。 书中首先提出了几个观点:

设计面向对象软件很难,但设计可复用的面向对象软件更难。 有经验的面向对象设计者可以设计得很好,但初学者拿不出手。 无论解决什么问题,专家设计人员都希望重用以前使用的解决方案,而不是从头开始。 以下是一些不太理解的设计模式的定义。 描述用于解决特定场景中常见设计问题的类和交互通信方。 谈论人在软件设计这里可复用的概念很模糊,所以我想理解为面向对象的软件设计

这个最佳做法来自别人的总结。 典型的源代码是各种各样的书和源代码。另一个重要来源是自己的软件开发经验的总结。

解决http://www.Sina.com/http://www.Sina.com /的最佳做法。 显然,如果解决问题a的最佳做法不是解决问题b,至少不是解决问题b的最佳做法,我认为这里至少会遇到两个问题。

某个设计模式解决的是什么问题? 我的问题和某个设计模式解决的问题一样吗? 得到上面两个问题的答案后,接下来是设计模式如何解决我的问题。

这两个问题是在我看来提出的,同时我也认为这是两个糟糕的问题。 以下进行说明。

首先,不建议初学者直接学习其23种设计模式的使用方法。 学习的结果多是掌握了如何用编程语言实现某种设计模式,但对该设计模式解决了什么问题却没有深刻的印象。 这种成见让学者认为设计模式很简单,用于在实际开发中使用模式,没有解决实际问题。 我是这样做的,所以我觉得有更好的方法。

一个建议是在初学者阶段,按照这个步骤学习设计模式。

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com /的想法是先有问题后有模式,大脑中形成的想法不是孤立的模式

到此为止,让我们来看看上面的两个问题。 这是带着答案寻找问题的想法。 实际情况应该带着问题寻找答案。 我们会重新调整:

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com/3358 www.Sina.com.Sina.com

问题1和问题2与设计模式没有任何关系,但这是能否应用某个设计模式的第一步。 这既是滥用设计模式的根源,同时也是很多人放弃设计模式的原因。

关于如何回答这两个问题,pgddmj暂时无法回答大家。 分析问题的能力,可能需要时间的积累。

套路设计模式在解决特定问题的最佳实践中定义本身并没有错,但往往陷入设计模式的笼子。

以GoF设计模式为例,那23种设计模式是由比你还聪明的程序员总结出来的,但使用它们并不是没有代价的。

设计模式不是现成的代码,不像类库那样可以直接使用设计模式,大多数情况下都需要解决代码的可扩展性问题,那么这里的可扩展性真的需要吗? 是过度的设计吧

设计模式提升扩展性的方式往往是增加抽象,这就牺牲了简单性

这里再看一下开篇的两个问题:

问:写代码一定要用设计模式吗?

答:不是,不是所有问题都有现成的解决方案。

问:用了设计模式的代码就比没用的好吗?

答:不是,也许更差。

学习设计模式的好处

虽然设计模式不是银弹,掌握设计模式也不一定能帮你解决你正面临的问题,但学习一下设计模式对你的软件开发工作还是大有裨益的,就算你永远不使用它。

如果不忽悠下读者学这个还是有点用的,那写后续的系列文章意义在哪......

1.应对面试中的设计模式相关问题

就很直接,如果你是被面试的,被问到的概率不低;如果你面试别人,可以用来考察下候选人的理解程度。

2.让读源码、学框架事半功倍

优秀的开源项目中类的个数都会比较多,类结构、类之间的关系极其复杂,常常调用来调用去。为了保证代码的扩展性,代码中会使用到很多设计模式,当然也不排除作者秀的嫌疑,但是如果你不懂设计模式,看开源代码经常摸不着作者的设计思路,看起来找不到北。

3.为你的职场发展做铺垫

公司里面code review,你连几个设计模式都说不出来,一看就不是“jpdc”,嗯,就是这样的。

4.提升你的代码设计能力

这一点要看造化,但这是客观存在的,你总会遇到需要设计复杂系统的时候,早接触早准备。

 

点击关注,第一时间了解华为云新鲜技术~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。