Questions tagged [design-patterns]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

Filter by
Sorted by
Tagged with
0 投票
2 回答
864 浏览

带 Boost 的可注释控制流图?

我有一个控制流图,表示我的中间语言代码的单个过程。节点和边通过顶点/边属性进行注释,并包含指令和分支信息。

现在我想对该图执行数据流分析,并将该图输入每个数据流分析模块。每个模块都应该能够用自己的数据注释 CFG 。
我需要解决的问题:

  • 我不知道数据流分析模块引入了多少注解(因为我以后会实现额外的分析模块)
  • 我对特定数据流分析模块引入的注解类型一无所知
  • 每个数据流分析模块应该独立于其他模块存在,即模块A不应该关心模块B引入的注解

您是否有机会实现上述所有要求?任何意见或建议都非常感谢

更新:
更具体地说,我基本上想将我的注释与 Graph 类型分离。当使用通常的顶点/边属性时,图形类型本身总是被包含的属性类型“污染”(因此取决于顶点/边属性类型)。

0 投票
1 回答
268 浏览

领域模型序列号

我需要根据给定的前缀代码为项目分配下一个序列号。因此,您最终会得到其他 ID 号码,例如 PROJ_ABC_001、PROJ_ABC_002、PROJ_XYZ_001、PROJ_XYZ_002 等。

虽然这种需求非常具体,但我建议有一个更普遍和常见的情况,即企业使用作为连续整数的备用 id 来识别不同的客户、项目、订单 - 等等。

当然,这些不是数据库中的主键。虽然数据库是维护和生成序列号的逻辑场所,但只有应用程序知道给定用例的特定规则。

您是否曾经在应用程序中将序列号视为域对象?你能建议任何设计模式在多用户环境中这样做吗?

干杯,
贝里尔

0 投票
4 回答
6699 浏览

大型嵌套 switch 语句的设计模式

我搜索了许多关于重构大型switch语句的文章。

但他们不做我想做的事。我要遇到的问题是有一个巨大的 switch 语句,它根据两个不同的值调用不同的方法,比如说 atype和 a code

目前,我会处理这样的情况:

也许结合工厂和命令模式的东西会帮助我?我一定遗漏了一些明显的东西。

你将如何重构这段代码?


我可能需要更具体地了解我所面临的情况。

我正在从服务器接收数据包。一个数据包包含一个类型和一个代码以及一些特定信息。

一旦数据到达,我就检索数据包的typecode,然后它进入 的switch语句type,在确定type调用特定方法以code在数据包上执行切换之后。

处理代码的方法现在进一步解码数据包并完成该过程。

0 投票
3 回答
8331 浏览

Objective-C - 模板方法模式?

因此,我一直在阅读有关 Objective-C 模板方法的内容,并试图了解它们的特别之处。据我了解,基类中的任何方法都可以被覆盖并且可以调用超级?那么模板方法不仅仅是覆盖基类中的方法吗?

如果我错了,你能解释一下模板方法模式是什么,你能提供一个例子吗?

0 投票
1 回答
808 浏览

如何在对象层次结构中对级联设置进行建模

试图思考如何在对象层次结构中对默认值的概念进行建模。这些默认值应适用于层次结构中的所有对象,除非对象覆盖了设置。如果一个设置被覆盖,那么它及其所有子项将获得覆盖的值,但其他值将从层次结构中拉出。

也许一个例子会有所帮助。考虑一个模拟体育比赛日程的系统。在顶部,有一个 Sport 对象。此对象包含一组联赛,而联赛包含一组赛季。一个赛季包含一组赛程,一个赛程包含一组比赛:

也许有一个 Defaults 对象有点像这样:

因此,“Soccer”的 Sport 对象将拥有一个 Defaults 对象,该对象指定:

然后,联盟可以覆盖这些设置,也许:

季节可以覆盖设置,时间表也可以。也许某个比赛时间表是针对低级别比赛的,并且只需要一名裁判。因此,计划可能会覆盖默认值:

因此,这意味着当调度系统运行并尝试在该时间表内安排比赛时,它会知道比赛应该安排在“第 4 场”或“第 5 场”,应该在周六或周日,应该是90 分钟,并有一名裁判:

对此进行建模的好方法是什么?是否有现有的设计模式?我一直在尝试在谷歌上寻找解决方案,但很难选择正确的关键字。如果有人可以向我指出在线资源或这样做的示例,我将不胜感激!我正在用 Java 实现它,但会查看任何示例。

我能想到的一种类似的技术是浏览器中的 CSS 是如何工作的。值在层次结构中向下级联,每个节点都能够覆盖更高层的值。这是正确的方法吗?我将如何在 Java 中建模?我将如何保存它并通过 Hibernate 查询它?

我最后关心的是如何处理仅与层次结构中特定对象集有关的默认设置。例如,在 CSS 中,值“width”对于“script”元素可能没有意义。在 CSS 中,该设置可能只是被忽略了,但如果我这样做了,我的 Defaults 对象将是一个包含系统中任何对象可能需要的所有可能设置的大类。“requiredRefereePositions”对 Venue 对象意味着什么?不确定这是否是最好的方法。

0 投票
2 回答
694 浏览

MVC 模式:视图是否应该引用模型

在 MVC 模式中:当用户键入内容时,Control 会将用户输入“翻译”到 Model 以处理数据。

但是,在其他场景中,例如我的表单有一个列表框,并在加载时从数据库加载数据。所以,加载方法我应该放在 View 中,或者我应该通过 Control 调用它。

例如: 查看:

在这个模式中哪个是最好的。请给我一个建议。

谢谢 :)

0 投票
3 回答
247 浏览

PHP 设计模式

我有一个反复出现的问题,我目前正在处理这样的问题 -

进入具有平台的脚本的 POST 变量,平台来自列表,例如:xbox、ps3、pc、mobileapp、mobilegame 等

对于每个不同的平台,我希望能够在我的脚本中做一些不同的事情,但在某些情况下,我希望代码做非常相似的事情,我现在做这样的事情:

我想在我的代码中转向 OOP 方法,我想使用对象作为我的数据存储介质,而不是像现在这样使用数组,但我有时确实需要提前在代码中定义属性,我怎么能做上述但有对象?

0 投票
7 回答
25004 浏览

会计软件设计模式

对于包含财务会计功能的软件的设计模式或其他最佳实践,是否有任何好的资源(书籍、权威指南等)?

具体来说,关于处理以下问题的好信息在哪里:

  • 货币数量的内部表示
  • 帐户、日记帐和其他记录的内部表示
  • 协调不一致(自动或通过用户操作)
  • 处理会计期间的结束(每天、每周、每月)
  • 设计对商人有意义的用户界面和打印的财务报告

注意:我们在这里寻找“权威”或其他被广泛接受的信息。否则,这只会​​变成人们尝试过的所有事情的一大堆轶事,使话题变得非常主观。

0 投票
1 回答
1974 浏览

解析器的设计模式

我有一个程序请求网页,解析它并取决于结果决定下一步做什么。

例如:程序应该从页面中获取一些元素,我们称之为“目标元素”。如果程序确实请求并获得“someOtherElement”,它将继续执行。如果它获得了“aimElement” Executor 应该点击一些链接,执行结束,我们进入下一个任务。程序有 20 次尝试获取“aimElement”。并且“aimElement”将来可能会发生变化。

看起来很简单,但我真的不知道如何通过良好的 oo 设计来实现这一点。我在考虑两个对象:Task 和 Executor。Task 包含所有条件,Executor 接收 Task 作为参数,并根据 Task 的需要执行请求。但是如果 executor 将原始页面返回给 Task 本身,Task 就会变得复杂,并且它们之间会有很强的联系。如果 Executor 返回已经解析的页面元素,那么 Executor 将需要知道解析什么以及如何解析,并且也会很复杂,并且会有强连接。

我不知道我的解释是否清楚,但也许你可以给我一些设计模式的建议,或者分享你遇到类似问题的经验。

0 投票
5 回答
4934 浏览

外观和 DAO 之间适合什么模式?

我正在为其 Java EE Web 应用程序设计我公司架构的一部分。我很清楚使用外观和一个或多个 DAO 的原因。我遇到的问题是:

肯定会有一些逻辑属于集成层,因为这完全是为了保持数据模型的一致性。除了逻辑超出了简单地维护引用完整性和其他将由 JPA 和 Hibernate 处理的“原始”持久性任务之外。我不将其归类为业务逻辑,因为它与任何业务功能分开。但是,我的理解是,DAO 应该只实现访问对象并将对象持久保存到数据源所需的逻辑。

我的结论是我需要一个适合集成层的类似“业务对象”的模式。我环顾四周,发现最接近的东西(但在我看来仍然不太正确)是Sun Transfer Object Assembler pattern

要么我对 Java EE 的理解存在差距,要么存在适合的模式。


15 30 50 per page
1
2 3 4 5
1498226