问题标签 [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 投票
23 回答
19369 浏览

language-agnostic - 单身人士:好的设计还是拐杖?

单例是一种备受争议的设计模式,所以我对 Stack Overflow 社区对它们的看法很感兴趣。

请为您的观点提供理由,而不仅仅是“单身人士适合懒惰的程序员!”

这是一篇关于这个问题的相当好的文章,虽然它反对使用单例: scientificninja.com:performant-singletons

有没有人有其他关于他们的好文章?也许支持单身人士?

0 投票
5 回答
9200 浏览

.net - 寻找 UI 的命令模式示例

我正在开发一个带有基本 UI 的 WinForm .Net 应用程序,其中包括启动相同底层代码的工具栏按钮、菜单项和击键。现在,每个事件处理程序调用一个通用方法来执行该功能。

根据我的阅读,这种类型的操作可以由命令设计模式处理,并具有自动启用/禁用或选中/取消选中 UI 元素的额外好处。

我一直在网上搜索一个好的示例项目,但真的没有找到。有没有人可以分享一个很好的例子?

0 投票
7 回答
3510 浏览

java - 你真的可以用 GoF 设计模式构建一个快速的文字处理器吗?

四人帮的设计模式至少使用文字处理器作为他们的一些模式的示例,特别是复合和享元。

除了使用 C 或 C++ 之外,您真的可以使用这些模式和它们需要的面向对象的开销来编写高性能的全功能文字处理器吗?

我知道 Eclipse 是用 Java 编写的,但我没有经常使用它,所以我不知道它是否像 Visual Studio 那样快,或者像具有基于 C++ 的文本编辑系统的那样优美。


我只使用 C++ 和 Java 作为示例。这个问题更多地与拥有大量内存对象的开销有关,就像在文字处理器甚至游戏等应用程序中那样。

设计模式以牺牲简约为代价促进抽象,尽管它们通常会指出您何时可能会受到某种性能影响。文字处理器,尤其是游戏,可以从尽可能接近金属中获得最大的好处。

我只是想知道是否有人知道不是用 C++ 编写的快速面向对象的文字处理器或文本编辑器,以及他们是否会使用模式构建一个,或者他们会放弃很多抽象的东西吗?

0 投票
10 回答
92644 浏览

sql - 在 INNER JOIN 的一部分中使用 LIKE 子句

在构建存储过程/查询时,我可以/应该使用 LIKE 标准作为 INNER JOIN 的一部分吗?我不确定我问的是否正确,所以让我解释一下。

我正在创建一个过程,该过程将获取要在包含文本的列中搜索的关键字列表。如果我坐在控制台前,我会这样执行它:

但是我在存储过程中进行“强类型”列表解析时学到的一个技巧是将列表解析为表变量/临时表,将其转换为正确的类型,然后对该表执行 INNER JOIN在我的最终结果集中。这在向过程发送整数 ID 列表时非常有用。我最终得到一个如下所示的最终查询:

我想将此技巧与字符串列表一起使用。但由于我正在寻找一个特定的关键字,我将使用 LIKE 子句。所以理想情况下,我想我的最终查询应该是这样的:

这可能/推荐吗?

有没有更好的方法来做这样的事情?


我将通配符放在子句两端的原因是因为卡片文本中使用了“archfiend”、“beast-warrior”、“direct-damage”和“battle-damage”术语。

我的印象是,根据性能,我可以使用我指定的查询还是使用全文关键字搜索来完成相同的任务?

除了让服务器对我想要进行文本搜索的字段进行文本索引之外,我还需要做些什么吗?

0 投票
6 回答
1763 浏览

sharepoint - 事务设计模式

我需要使用不支持 COM+ 或 .NET 事务的外部 API 创建一个“事务”进程(确切地说是 Sharepoint)

我需要做的是能够按顺序执行多个进程,但是该序列中的任何失败都意味着我将不得不手动撤消前面的所有步骤。在我的情况下,只有 2 种类型的步骤,两者都相当容易撤消/回滚。

是否有人对可能对此有用的设计模式或结构有任何建议?

0 投票
10 回答
7201 浏览

javascript - 有哪些使用 JavaScript 实现设计模式的示例?

我是使用 JavaScript 的中等熟练程序员,但我不是大师。我知道你可以用它做一些非常强大的事情,除了相当基本的 DOM 操作之外,我还没有看到太多东西。我想知道人们是否可以提供一些使用 JavaScript 的传统设计模式概念的示例,例如工厂方法、单例等。在什么情况下这些模式会在网络上使用?

0 投票
7 回答
2713 浏览

c# - Compact Framework - 是否有可用的 MVC 框架/库?

我找到了 Microsoft 员工关于此主题的文章,但有没有人为此实施了更强大的框架?是否有可以轻松移植的轻量级 WinForms 框架?当更聪明的人已经做到这一点时,我想相当快地加快速度并避免生成我自己的框架/库来处理这个问题。

我没有看过P&P 集团的移动软件工厂,但我怀疑它有点重。值得一看吗?

编辑:我不是在寻找有关 ASP.NET MVC 项目的信息。我在询问紧凑框架“WinForms”的实现,以及如何用它来实现 MVC。

0 投票
2 回答
1000 浏览

design-patterns - 超越设计模式?

在过去 10 年左右的时间里,有少量文章和论文引用了 Christopher Alexander 的新作品“秩序的本质”以及如何将其应用于软件。

不幸的是,我能找到的唯一作品是 James Coplien 和 Richard Gabriel 的作品。除此之外没有什么,至少从我尝试通过谷歌找到这些东西来看。

这种讨论是否在任何地方发生?

微信


@乔治亚州

我的问题不在于设计模式或模式语言。这是关于尝试看看克里斯托弗亚历山大的更多工作是否可以应用于软件(它可能可以,因为它的物理限制比建筑和建筑还要少)。

设计模式和模式语言似乎已经接受了 Alexander 设计模式的结构,但抓住精髓的并不多。本质是在特定环境中解决问题之外的东西。

如果不使用亚历山大后来的一些作品作为参考,就很难解释。

编辑:不,我收回了。

例如,有一种称为 Alcoves 的架构设计模式。该模式的背景不仅植根于情况,而且植根于建筑物目的的基本原理:它们是要居住的结构,并且必须促进居住在其中。在 Alcove 模式的情况下,上下文是您想要一个允许多个人在同一区域做不同事情的区域,因为对于家庭成员来说,身体在一起以及能够做事很重要容易分散其他家庭成员注意力的事情。

大多数软件设计模式在上下文中描述了一个问题,但它们没有更深入地说明问题为什么重要,或者为什么问题是软件的基础。它使得不恰当或轻率地应用设计模式变得非常容易,这与设计模式一开始的意图完全相反。

微信

0 投票
11 回答
108377 浏览

model-view-controller - 什么是 MVC,它有什么优势?

我发现了什么是 mvp 和 mvc 以及有什么区别,但它并没有真正回答这个问题。

我最近开始使用 MVC,因为它是我和我的工作伙伴将要使用的框架的一部分。我们之所以选择它,是因为它看起来很简单,而且过程与显示分离,除此之外还有我们不知道和可能错过的优势吗?

优点

  1. 显示和处理分离


缺点

  1. 到目前为止没有
0 投票
5 回答
973 浏览

ruby-on-rails - 如何在 MVC 中表示跨模型信息?

我有一个使用 MVC 构建的应用程序,它生成一个视图,该视图提供跨多个模型的摘要信息。此外,一些计算是在不同的数据集上执行的。

没有明确的单一模型(至少映射到表)作为起点似乎是有意义的,因此从控制器中的贡献模型中提取各种摘要,传递到视图并在那里执行计算.

但这似乎很脏。但是控制器应该是轻量级的,不是吗?业务逻辑不应该出现在视图中,就像我现在所拥有的那样。

那么这些信息应该在哪里收集呢?一个不映射到表格的新模型?库函数/模块?或者是其他东西?

(虽然我认为这主要是一个架构/模式问题,但我在 Rails 工作,FWIW。)

编辑:全面的好答案,以及很多共识,这令人放心。我“接受”了我为将 Railscasts 的链接保留在顶部所做的回答。我在 Railscast 观看中落后了——我将努力纠正这一点!