问题标签 [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.

0 投票
24 回答
538642 浏览

user-interface - 什么是 MVP 和 MVC,有什么区别?

当超越RAD(拖放和配置)构建用户界面的方式时,许多工具鼓励您可能会遇到三种设计模式,称为Model-View-ControllerModel-View-PresenterModel-View-ViewModel。我的问题分为三个部分:

  1. 这些模式解决了哪些问题?
  2. 它们有何相似之处?
  3. 它们有何不同?
0 投票
39 回答
608335 浏览

oop - 什么是控制反转?

第一次遇到控制反转 (IoC) 时可能会非常混乱。

  1. 它是什么?
  2. 它解决了哪个问题?
  3. 什么时候适合使用,什么时候不适合?
0 投票
3 回答
1555 浏览

ruby - 如何使用 Ruby 中的单例设计模式创建类?

单例模式是一种设计模式,用于将类的实例化限制为一个对象实例。虽然我知道如何在 C++ 和 Java 中编写单例模式,但我想知道是否有人知道如何在 Ruby 中实现它?

0 投票
14 回答
19576 浏览

ruby-on-rails - 为什么所有 Active Record 都讨厌?

随着我对 OOP 的了解越来越多,并开始实施各种设计模式,我不断回想起人们讨厌Active Record的案例。

通常,人们说它不能很好地扩展(以 Twitter 为例)——但没有人真正解释为什么它不能很好地扩展;和/或如何在没有缺点的情况下实现 AR 的优点(通过类似但不同的模式?)

希望这不会变成一场关于设计模式的圣战——我想知道的只是****具体**** Active Record 出了什么问题。

如果它不能很好地扩展,为什么不呢?

它还有什么其他问题?

0 投票
16 回答
2927 浏览

database - 您最喜欢的编程语言与数据库交互的方式是什么?

有许多方法可以连接数据库层并与之交互。例如,在 Java 中,常见的用法是原始 SQL 的JDBC调用、对象关系映射器、JDBCTemplate ( Spring )、存储过程等。

在您的语言中,您喜欢哪个选项,为什么?你什么时候考虑其他人?

0 投票
4 回答
9118 浏览

wpf - 自定义 WPF 命令模式示例

我已经完成了一些 WPF 编程,但我从未得到过的一件事是命令模式。每个示例似乎都是内置的,编辑、剪切、粘贴。任何人都有自定义命令的最佳实践示例或建议?

0 投票
3 回答
3303 浏览

sql - 动态搜索多个 sql 表的需要模式

我正在寻找一种在多个表上执行动态搜索的模式。

我无法控制遗留(且设计不佳)的数据库表结构。

考虑类似于简历搜索的场景,其中用户可能希望对简历中的任何数据执行搜索,并获取与其搜索条件匹配的简历列表。任何字段都可以随时与一个或多个其他字段组合进行搜索。

实际的 sql 查询是根据搜索的字段动态创建的。我发现的大多数解决方案都涉及复杂的 if 块,但我不禁认为必须有一个更优雅的解决方案,因为现在这必须是一个已解决的问题。


是的,所以我开始了在代码中动态构建 sql 的路径。看起来很可怕。如果我真的尝试支持查询任何表中任何字段的任何组合的请求能力,这将是一组 MASSIVE 语句。 颤抖


我相信我读到 COALESCE 仅在您的数据不包含 NULL 时才有效。那是对的吗?如果是这样,那就不行,因为我到处都有 NULL 值。

0 投票
6 回答
9178 浏览

user-interface - 你知道 GUI 编程的任何模式吗?(不是设计 GUI 的模式)

我正在寻找涉及 GUI 编码部分的模式。不像我非常熟悉的MVC那样全球化,而是关于单个控件和输入的模式、好的想法和最佳实践。

假设我想制作一个显示一些可能重叠的对象的控件。现在,如果我单击一个对象,我需要找出要做什么(只需找到我可以通过多种方式执行的对象,例如四叉树和 Z 顺序,这不是问题)。而且我可能会按住修改键,或者某些对象从一开始就处于活动状态,从而使选择或其他任何事情变得更复杂。我应该有一个表示屏幕对象的对象实例,单击时处理用户操作还是主类。等等。这样的问题有什么样的模式或解决方案?

0 投票
15 回答
3252 浏览

language-agnostic - 你使用设计模式吗?

设计模式在现实世界中的渗透率如何?你是在日常工作中使用它们——与你的同事讨论如何以及在哪里应用它们——还是它们更多地是一个学术概念?

他们真的为你的工作提供了实际价值吗?或者它们只是人们谈论听起来很聪明的东西?

注意:出于这个问题的目的,请忽略像Singleton这样的“简单”设计模式。我说的是设计您的代码,以便您可以利用Model View Controller等。

0 投票
4 回答
7780 浏览

design-patterns - 解析二进制文件数据并存储在数据库中的设计模式

有没有人推荐一种设计模式来获取二进制数据文件,将其部分解析为对象并将结果数据存储到数据库中?

我认为类似的模式可用于获取 XML 或制表符分隔的文件并将其解析为它们的代表对象。

一个常见的数据结构将包括:

(标题) (DataElement1) (DataElement1SubData1) (DataElement1SubData2)(DataElement2) (DataElement2SubData1) (DataElement2SubData2) (EOF)

我认为一个好的设计将包括一种根据文件类型或标题中包含的一些已定义元数据更改解析定义的方法。因此,工厂模式将成为 Parser 部分整体设计的一部分。