📝 设计模式
89篇技术文档📅  最后修改于: 2021-09-10 02:38:05        🧑  作者: Mango
什么是UML?它是用于可视化系统的通用建模语言。它是软件行业标准的图形语言,用于指定、可视化、构建和记录软件系统的工件以及业务建模。UML的好处:简化复杂的软件设计,也可以实现 OOP 之类的被广泛使用的概念。它在几个图形图表中减少了数千字的解释,可以减少理解的时间消耗。它使交流更清晰、更真实。它有助于在视图中获取整个系统。软件程序员一旦对问题有了清晰的认识,就很容易实现实际需求。UML的类型:U...
📅  最后修改于: 2021-09-10 02:38:17        🧑  作者: Mango
复合模式是一种分区设计模式,它描述了一组对象,这些对象的处理方式与同一类型对象的单个实例相同。复合的目的是将对象“组合”成树结构以表示部分-整体层次结构。它允许您拥有树结构并要求树结构中的每个节点执行任务。正如 Gof 所描述的那样,“将对象组合成树结构以表示部分-整体层次结构。 Composite 让客户可以统一处理单个对象和对象的组合”。在处理树结构数据时,程序员通常必须区分叶节点和分支。这使...
📅  最后修改于: 2021-09-10 02:38:28        🧑  作者: Mango
为一副通用纸牌设计数据结构 解释如何将其子类化以实现特定的纸牌游戏,以及如何将数据结构子类化以实现二十一点。解决方案:首先,我们需要认识到一副“通用”的纸牌可能意味着很多东西。通用可能意味着可以玩类似扑克游戏的标准纸牌,或者甚至可以扩展到 Uno 或棒球卡。实施特定的纸牌游戏让我们假设这套牌是标准的 52 张牌,就像您在二十一点或扑克游戏中看到的那样。如果是这样,设计可能如下所示:这里的结构很清楚...
📅  最后修改于: 2021-09-10 02:38:39        🧑  作者: Mango
十二要素应用程序是一组用于构建 Web 应用程序的 12 条原则或最佳实践,如今这些应用程序通常被称为软件即服务 (SAAS) 应用程序。它由 Heroku 的联合创始人 Adam Wiggins 先生于 2011 年发布。 这些原则是在 Heroku(一个平台即服务)的工作人员获得的所有经验和观察的结果。曾在其上部署过大量各种软件即服务应用程序。这些原则帮助我们创建使用声明式编程实现设置自动化的...
📅  最后修改于: 2021-09-10 02:38:50        🧑  作者: Mango
许多软件专业人员认为架构风格和模式是相同的。遗憾的是,一些软件开发人员不理解架构模式和设计模式之间的区别。在本文中,我们将总结它们之间的差异。根据 MSDN,架构风格和模式是一回事。但是怎么可能呢?风格这个词的意思是:“做某事的方式”,而图案的意思是:“重复的装饰设计”。然而,这些定义显示了两种不同的东西。在软件工程中,术语必须更加清晰并描述具体的东西。那么,术语之间有什么区别,我们如何区分它们呢...
📅  最后修改于: 2021-09-10 02:39:00        🧑  作者: Mango
第 1 轮(电话)第一轮包括3个问题:有n个不同重量的球,我们需要把所有的球都融化成一个新的大球。熔化两个球的成本等于它们的重量之和。我们需要以最低的成本融化这些球。例如,如果给我们 4 个重量分别为 4、3、2 和 6 的球。我们可以通过以下方式融化这些球。1) 首先熔化重量为 2 和 3 的球。现在我们有三个重量为 4、6 和 5 的球。2) 现在融化重量为 4 和 5 的球。现在我们有两个重...
📅  最后修改于: 2021-09-10 02:39:11        🧑  作者: Mango
范式也可以称为解决某些问题或完成某些任务的方法。编程范式是一种使用某种编程语言解决问题的方法,或者我们也可以说它是一种使用我们可用的工具和技术按照某种方法解决问题的方法。有很多已知的编程语言,但所有这些语言在实现时都需要遵循一些策略,并且这种方法/策略是范式。除了各种编程语言之外,还有许多范例可以满足每个需求。下面讨论它们:1. 命令式编程范式:它是最古老的编程范式之一。它与机器架构密切相关。它基...
📅  最后修改于: 2021-09-10 02:39:22        🧑  作者: Mango
我们已经讨论了一个战斗机示例并在第 1 组中介绍了策略模式。策略模式 |第一套(介绍)在这篇文章中,我们将策略模式应用于战斗机问题并讨论实现。第一步是识别未来可能因不同类别而异的行为,并将它们与其他类别分开。对于我们的示例,让它们成为踢腿和跳跃行为。为了分离这些行为,我们将从Fighter类中提取这两种方法,并创建一组新的类来表示每个行为。Fighter 类现在将委托其踢腿和跳跃行为,而不是使用在...
📅  最后修改于: 2021-09-10 02:39:33        🧑  作者: Mango
先决条件:复合设计模式复合模式是行业中使用最广泛的模式之一,解决了一个非常重要和微妙的问题。当用户希望以与这些单个对象的集合相同的方式处理单个对象时使用它,例如,您可能希望将副本中的页面视为与整个副本相同,整个副本基本上是页面的集合或如果您想创建某个事物的层次结构,您可能希望将整个事物视为对象。将对象组合成树结构以表示部分-整体层次结构。 Composite 允许客户端统一处理单个对象和对象的组合...
📅  最后修改于: 2021-09-10 02:39:43        🧑  作者: Mango
我们强烈建议在继续阅读这篇文章之前参考下面的 Set 1。观察者模式 – 介绍在第一组中,我们讨论了下面的问题,一个没有观察者模式的问题的解决方案和解决方案的问题。假设我们正在构建一个板球应用程序,通知观众有关当前分数、运行率等信息。假设我们已经制作了两个显示元素 CurrentScoreDisplay 和 AverageScoreDisplay。 CricketData 拥有所有数据(跑步、保龄...
📅  最后修改于: 2021-09-10 02:39:54        🧑  作者: Mango
迭代器模式是一种相对简单且经常使用的设计模式。每种语言都有很多可用的数据结构/集合。每个集合都必须提供一个迭代器,让它遍历它的对象。然而,在这样做时,它应该确保它不会暴露其实现。假设我们正在构建一个需要我们维护通知列表的应用程序。最终,您的代码的某些部分将需要遍历所有通知。如果我们将您的通知集合实现为数组,您可以将它们迭代为:如果它是其他一些集合,如集合、树等,迭代方式会略有变化。现在,如果我们构...
📅  最后修改于: 2021-09-10 02:40:04        🧑  作者: Mango
面试针对 Azure 团队 IDC Hyderabad。共有9名候选人来了。第1轮:2->7->8->11|13->16->17->21|22->23->27->29|30->32上面给出的排序链表,其中每个节点左右有 2 个指针。对于每一行起始节点向下指向下一行开始。每行有 4 个元素,除了最后一个可以有 <= 4 个元素。下一行开始元素大于前一行结束元素。我们需要为它设计和编码在正确位置插入新...
📅  最后修改于: 2021-09-10 02:40:15        🧑  作者: Mango
第1轮HackerRank 在线测试包含 2 道编码问题1. 给定一个由 0 和 1 组成的二维数组表示的图像,找出图像中最大簇的大小。群集一个或多个带有 1 的附属单元格是群集。即使在被全 0 包围的单个单元格中,也会聚集在一起。相邻单元格:左、右、上和下对角线单元格上的单元格不考虑用于聚类。集群大小:集群中 1 的数量输入:4510001001101000011110输出:52.给定一个二维字...
📅  最后修改于: 2021-09-10 02:40:26        🧑  作者: Mango
对象池模式是一种软件创建设计模式,用于初始化类实例的成本非常高的情况。基本上,对象池是一个包含一定数量对象的容器。所以,当一个对象从池中取出时,它在池中不可用,直到它被放回。池中的对象有一个生命周期:创建验证破坏。UML 图对象池设计模式Client :这是使用 PooledObject 类型的对象的类。ReuseablePool:PooledObject 类是实例化成本高、速度慢或可用性有限的类...
📅  最后修改于: 2021-09-10 02:40:37        🧑  作者: Mango
媒体社交网络服务系统的目的该系统将允许用户与其他用户共享照片和视频。此外,用户可以根据关注请求关注其他用户,他们可以查看其他用户的照片和视频。在此系统中,您可以搜索用户并查看他们的个人资料(如果他们的帐户是公开的)。否则,您需要发送关注请求。在开始设计任何像照片和视频共享社交网络服务系统这样的系统之前,建议详细考虑系统边界和需求,并尝试了解未来(例如 5 年或 10 年)系统容量是多少。这一点很关...