📜  设计模式:通过现实生活中的例子了解重要性

📅  最后修改于: 2021-09-10 02:45:59             🧑  作者: Mango

软件设计模式……软件设计模式是一种通用的、可重用的解决方案,用于解决软件设计中给定上下文中的常见问题。这是维基百科上写的关于软件设计模式的定义……如果你是一个有经验的开发人员并且花了一些时间为一些软件编写代码,那么上面的定义对你来说很有意义,但同一行就在你头上,听起来很无聊,如果你是一个初学者,完全不知道它。我们先和有经验的开发者讨论一下……(初学者请稍等,或者直接跳过下一段)。

设计模式-了解重要性与现实生活中的例子

软件设计模式……有趣的话题是吗?您可能喜欢从事一些设计模式并解决项目中反复出现的问题的开发生涯。您可能还知道它如何使代码可重用并提高开发人员的生产力。设计模式是开发人员谈论软件解决方案的常用词汇。当您(作为开发人员)说“我们应该使用单例模式实现这一点”时,所有其他开发人员都清楚地了解什么是共同的参考点。
和你说的够多了(有经验的……我们会回复你的)现在让我们来看看初学者或新手程序员……忘记技术性的东西,让我们先进行友好的讨论……

真实世界的例子

你喜欢食物吗? (每个人都喜欢那个) ……你最喜欢哪一家餐厅?你最常去哪里?您喜欢街头美食还是喜欢一些在线应用程序 Zomato 和 Swiggy?您可能尝试过不同的美食,也可能尝试过不同的地方。如果您的清单中有一家最喜欢的餐厅,您大部分时间都喜欢吃自己喜欢的菜,那么这背后的原因是什么?当然,那家餐厅的经验丰富的厨师可能会使用特定的技术来准备这道菜。如果您也想在家里用同样的测试准备同样的食物怎么办?你现在需要做什么?您需要遵循经验丰富的厨师使用的相同方法或技术。他们可能已经尝试了很多食谱,并且可能已经改变了准备那道菜的方法。最后,当他们学会了一种特殊的技术来准备那道菜,而且味道很好时,他们就停下来了。

好吧,如果您还想准备与您最喜欢的餐厅一样美味的同一道菜,那么您需要遵循经验丰富的厨师提供的相同方法和技巧,或者您需要联系您的朋友,他们会使用某些特定技术烹饪并准备菜肴.

说完食物,让我们来谈谈设计模式。注意上面突出显示的词,尝试了很多食谱改变了方法经验丰富的厨师厨师真的很好。设计模式也是如此。设计模式就像厨师(四人组(GoF) )用来准备一道菜以使其味道最好的一些最佳实践。

  • 设计模式是经验丰富的面向对象软件开发人员(在我们的上下文中经验丰富的厨师或朋友)使用的一些设计实践。它们是软件开发过程中面临的问题的通用解决方案。
  • 它们是许多软件开发人员在相当长的一段时间内通过反复试验(尝试许多方法)获得的解决方案。

让我们对设计模式进行一些技术讨论。

四人组(GoF))随着时间的推移遇到了问题,他们解决了。他们注意到其中一些解决方案可以归类,并且一些问题总是非常普遍和普遍(与贫困一样普遍)。因此,从技术上讲,设计模式只是为代码提供适当流程、链接和结构的模板。它是一种交流工具,也可以说是经验丰富的软件开发人员提供的通用解决方案,用于解决开发人员在软件开发阶段面临的常见问题。

计算研究人员和从业人员开发了各种组织概念和方法,用于设计简洁、正确和可重用的高质量面向对象软件,这些软件描述了“典型”软件设计问题的解决方案。模式为可应用于许多不同情况的解决方案提供了通用模板。您可以使用这些模板数百万次来解决某些特定类型的问题。

现在你可能有一个问题,为什么我们需要将我们的问题融入一些设计模式……为什么我们不能使用我们的技术。使用它有什么好处?我们当然要讨论这个……

设计模式的目的

  • 你正在经营一家餐厅。经营餐厅不仅仅意味着准备食物并将其提供给顾客。您还需要照顾好美味的食物,干净的菜肴,服务员,厨师或其他员工在您的餐厅面临的常见问题。作为餐厅老板,您还需要为这些一般问题提供解决方案。
    作为一名软件工程师,您的目的不仅应该是编写一堆代码,而且还应该降低复杂性并注意代码的可重用性。您将需要编写干净、优雅、无错误且可管理的代码,以便其他开发人员可以理解,并且以后如果需要进行任何类型的更改,则可以在对整个项目影响最小的情况下完成,这里设计模式发挥了重要作用关键的角色。
  • 你在没有任何计划的情况下自己盖房子。你对房子想要什么或需要什么有一个粗略的想法,然后开始建造第一堵墙,然后是第二堵墙,依此类推。很快你就会发现这行不通,而且如果你和多人一起建造房子,问题就会更多。如果没有计划,他们怎么知道该怎么做?软件也是一样。
    在软件开发中,您无需预先设计即可构建应用程序。特别是如果您可以重复使用现有设计。 (例如,向网站添加新页面不需要您重新设计所有内容。您只需遵循其他页面的制作方式并重新使用相同的构建模式即可)。您可以检查您正在处理的类似问题的现有解决方案并使用该技术或使用那里的一些代码来解决您自己的问题。
  • 假设您是学生或 CAT 有志者。为了解决一些能力问题或数学问题,您可能会使用一些公式或技巧。您应用这些公式或技术来解决一些类似的问题。你知道你只是重申了几行或几条原则,你的努力就会减少。您也节省了时间。在软件开发中,设计模式扮演着这个至关重要的角色(数学公式或技术)。
  • 在软件开发中,假设您正在编写一些代码,您意识到自己犯了一个错误。更正它需要在另外 10 个文件中进行更改。这意味着你的设计,如果你做了,一开始就不好。这个错误让你付出了什么代价?……你浪费了很多时间、一些资源和努力,还影响了其他开发人员的生产力。

您可能已经知道设计模式在软件开发中的重要性。让我们举一个例子,你正在做一个项目。您的项目有一个通知系统。您有 15 类代码。其中 13 个类生成通知。您在它们中的每一个中编写代码以与您的通知类进行通信。

几天后,情况发生了变化,您还有 10 个课程,您也可以向这些课程添加通知。您的通知机制发生了变化,您进入了所有 10+13 个类并更改了代码。现在你的代码对你没有意义。您意识到所有这些类都应该与通知系统分离。您创建一个新类并将所有通知逻辑放在那里。然后你想出抽象,允许任何东西以最小的涟漪效应和最大的可重用性通知你的系统。

您是否注意到您刚刚为整个代码发明了观察者或模式?如果您以前知道这种模式,那么您就不会遇到所有这些问题,也不会浪费很多时间。作为一名软件工程师,您应该构建有意义的软件。现在我们可以从以下几点总结设计模式的重要性……

  • 它使代码可重用、无错误且干净。
  • 加快开发进程。
  • 更改或修改变得更容易。
  • 减少开发者在开发过程中遇到的常见问题。
  • 提高面向对象的技能。
  • 易于理解代码流程。
  • 更少的代码很容易维护。