问题标签 [design-principles]

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 投票
4 回答
115 浏览

design-patterns - 简单/逐渐接触设计模式的好资源

我想给自己设定一个目标,每周向自己介绍一种新的设计模式。因为我现在在实习,很难让我这样做,因为我总是感到内疚,我应该做的是工作而不是学习模式。

你知道任何好的资源吗,最好是网站教程/演示,还有书籍,涵盖设计模式和应用程序架构/模式。您是否知道任何好的资源不仅仅是文本块(这不是我学习的最佳方式),我更喜欢遵循教程或查看模式的图形演示?

我已经在谷歌上搜索了好的资源,但它们似乎要么只涵盖一些设计模式,要么就是要阅读的大量文本。

0 投票
4 回答
2499 浏览

c# - UOM(计量单位)设计模式

寻找关于存储和转换已知值(即米到英尺)的一般设计模式原则。一直在谷歌搜索没有运气,所以我一定错过了一些东西。

假设单个表中有许多具有各种 UOM 的字段,最佳实践是什么?目前,许多字段都是隐含的,我们正在考虑对其进行标准化。我们希望让用户可以自由地输入他们的 UOM,但其他​​人可以在他们喜欢的 UOM 中查看。

我应该存储“输入的值”并转换为一些常见的原语(用户输入英尺,然后将其转换为米并存储)?我应该将此输入的英尺值存储为审计备份吗?

我不是某些数据库表的唯一消费者,其他应用程序总是在知道值+UOM 与原始用户输入值的情况下进行转换是否更好。

是否对我可能遗漏的精度有严重的转换影响。米>英尺>米对于业务应用程序的转换应该足够可靠(转换可以到小数点后第 17 位,但显示和输入的值限制为小数点后 2-4 位)

任何其他想法或链接指向我正确的方向,所以我没有重新发明一个已知问题的解决方案?

请注意,我并没有设想一些具有运算符重载的宏大解决方案,而是更多在普通 Joe Developer 可以维护的实际应用程序中起作用的解决方案。

0 投票
1 回答
625 浏览

javascript - jQuery中的接口隔离原则

谁能很好地说明这在 jQuery 中是如何工作的?

特别是关于here的答案。

这听起来与 OOP 的单一职责原则 (SRP) 相同吗?它有什么不同?

0 投票
3 回答
255 浏览

php - 试图理解 MVC - 我已经在做了吗?

我很快就深入到越来越大的应用程序中,所以我认为了解什么是模式以及它们是如何工作的等是个好主意。所以,我在 youtube 上观看一些教程并阅读一些关于模式和设计原则和 MVC 出现了。我听说过它,但从未真正理解它,并且尚未使用 Zend 或 CodeIgniter 或其他本质上使用它的人。

反正在研究MVC这个话题的过程中,好像已经在用了。有人可以验证吗?以下是我通常如何使用登录系统来设置应用程序,例如:

login.php - 这是显示表单的 html 页面。表格提交给:

process.php - 这个类检查提交的值,并根据该值验证输入,检查密码,发回适用的错误,如果一切都是犹太洁食,它会实例化一个用户对象:

user.php - 这是一个模板化用户需要的属性和方法的类,包括将用户添加到数据库、提取配置文件信息、注销、从用户实例化私人消息对象、设置所需的会话变量等信息然后返回到 process.php,然后标头重定向回主页并成功登录。

那么……这是一个简单的 MVC 吗?在我做的研究中,登录听起来像视图,进程听起来像控制器,用户听起来像模型。我敢肯定这里有更深入的内容,但我真的很想把这些东西包起来,所以对我的逻辑进行任何调整都是非常受欢迎的。谢谢。

0 投票
1 回答
122 浏览

oop - 为什么 oop 语言不支持单独的读写访问修饰符?

我经常发现自己编写 getter 和 setter 只是因为获取和设置需要不同的访问级别。而那些getter和setter是微不足道的(getter只返回,setter只设置值,里面没有其他代码)。当您希望字段值对外部世界只读时的典型情况(并且您为每个字段编写了一大堆 getter 函数。)

Getter 和 setter 是底层的函数。调用函数比设置字段要慢,因为您需要复制参数、推送和弹出堆栈帧、复制结果等。

好吧,编译器可能会优化函数调用并内联赋值,但这是您无法控制的事情。甚至 c++ 中的 inline 关键字也只是一个提示,编译器可以随意忽略它。您应该假设调用了一个函数并且它会变慢。

此外,从来没有语言(如 C#)支持属性并模仿这个东西,但它们只不过是看起来像一个字段的函数,你甚至无法分辨它是一个函数还是一个字段(没有 IDE 的帮助)。

如果我们可以为写入和读取设置不同的访问修饰符(例如像文件系统那样),而不只是告诉它会违反封装的教条原则,会出现什么问题?

0 投票
1 回答
787 浏览

design-patterns - 掌握创建者与依赖注入

GRASP Creator 与依赖注入完全矛盾吗?

如果不是,请解释原因。

0 投票
4 回答
3591 浏览

web-services - 关于如何在符合 REST 原则的同时尽可能有效地处理集合的 REST API 问题

我对 REST 很陌生,但据我所知,我了解以下 URL 符合 REST 原则。资源分布如下:

但是,如何优化这个示例 API?例如,我的图书馆中有 10K 本书,我想获取图书馆中每本书的详细信息。/library/book/<id>我真的应该对给定的每个 id强制进行 http 调用/library/book吗?或者我应该启用多个 id 作为参数?/library/book/<id1>,<id2>...并且喜欢一次批量获取 100 个 id 吗?

REST 原则对这种情况有什么看法?你的意见是什么?

再次感谢。

0 投票
5 回答
1127 浏览

c# - UML 帮助 C# 设计原则

我在理解下面的 UML 时遇到问题:

UML 图像

PersistentSet具体来说,和之间的关系是什么ThirdPartyPersistentSetPersistentObject和之间有什么关系ThirdPartyPersistentSet

请注意,UML 来自 Martin C. Robert,Martin Micah 的敏捷原则、模式和 C# 实践,2006 年。第 10 章

提前致谢!

0 投票
2 回答
1291 浏览

c# - UML 帮助 C# 设计原则

谁能指出下图的含义:

在此处输入图像描述

  1. PolicyLayer和PolicyServiceInterface是什么关系
  2. PolicyServiceInterface和MachanismLayer是什么关系。

C# 代码也将不胜感激!

请注意,UML 来自 Martin C. Robert,Martin Micah 2006 年的 C# 中的敏捷原则、模式和实践。

添加于 15 2011/6/2

执行以下具有相同含义的操作: 1) 一端为三角形的实线 2) 一端为三角形的虚线

2011/6/3 1日添加

有什么区别:1)一端带箭头的实线 2)一端带箭头的虚线

示例中的示例以及以下链接中的 PersistentObject 和 ThirdPartyPersistentSet:

UML 帮助 C# 设计原则

添加于 2011/6/3 第 2 次

PolicyLayer 和 PolicyServiceInterface 的关系可以如下:

关于

0 投票
7 回答
13506 浏览

php - 直接调用变量属性 vs getter/setter - OOP 设计

我知道这可能是主观的,但我从 Google 阅读了这个 PHP 优化页面,他们建议直接使用变量属性而不需要 getter 和 setter。可以理解的是,我看到了性能提升,但这真的是一个很好的设计实践吗?

他们使用 getter/setter 的示例:

建议优化:

这在我的设计过程中将是一个可喜的变化,因为我看到对 getter/setter 的需求正在消失,但是这样做可能会出现哪些其他障碍/好处?