问题标签 [specification-pattern]

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 投票
1 回答
4587 浏览

c# - 如何根据我的要求使用规范模式?

我已经阅读了规范模式的一些示例,但很难理解如何使用这种模式来实现。

我正在为客户开发一个庞大的程序。我需要从特定银行导入 XML 文件,然后对每个文件进行验证。Ledger Codes 有不同的方法(subs、bo、rcc)。所以当一个文件读取 SUBS 时,它应该发送到一个 SUBS 方法。

这里的例子:

接口:

  • 黑银行
  • 蓝色银行
  • 红银行

分类帐代码:

  • 潜艇
  • 碾压混凝土

结果:

  • BlackBank 有 SUBS、BO 和 RCC
  • BlueBank 有 SUBS
  • RedBank 有 BO 和 RCC

您能否提供一些示例代码或指出正确的方向?

0 投票
3 回答
993 浏览

specification-pattern - 购物车的数据库结构

我喜欢开发一个包含多种产品的购物车网站。(例如:手机、家具等)此处手机规格将涵盖

  • 显示尺寸
  • 记忆
  • 操作系统
  • 相机等,

但是对于家具——它的规格与上面的电子产品完全不同。

  • 木材类型
  • 颜色
  • 重量
  • 形状
  • 玻璃或哑光饰面等,

我的问题是:如何处理产品规格的通用数据库表?每个和每个类别的产品及其规格都会有所不同 - 那么如何拥有一个通用表 ProductSpecificationTable ?

我搜索了许多网站,包括谷歌.. 但无法获得完美的灵魂。请帮助我进入下一步。

0 投票
2 回答
7344 浏览

c# - 如何在列表上(同时)应用多个过滤条件?

我有以下带有 .Net 4.0框架的 C# 代码。这是在参考规范模式后创建的 - 由 Jeff Perrin

GetProducts()方法内部定义(硬编码)要使用的条件。还有另一种方法名为GetProductsBasedOnInputFilters(). 在此方法中,规范列表作为该方法的参数。

问题

在这种方法中,将这些过滤器应用于产品列表的最佳方法是什么?

注意:我尝试在循环中应用该FindAll子句并将结果添加到. 但这个逻辑是不正确的——只有满足所有条件的项目才需要返回。foreachlist

注意:productSpecifications 列表中的规格数量将根据用户输入而有所不同

注意:“为 Any() 方法动态构建 LINQ 过滤器? ”中提到的方法似乎很有用。但是我不确定如何在这里使用这种方法,因为我正在处理 List of specifications; 不是generic delegates

过滤方法

客户

摘要规范

通用规格

产品规格

实体

参考

  1. 规范模式 - Jeff Perrin
  2. C# 中的流利接口和方法链
  3. 避免使用 linq 多次浏览列表,使用动态条件(过滤器)
  4. 为 Any() 方法动态构建 LINQ 过滤器?
0 投票
1 回答
634 浏览

c# - 如何动态组合条件?

这个问题是对已经回答的问题How to apply multiple filter conditions (simultaneous) on a list?的增强。

在上述问题中,我们有一种将AND运算符应用于所有规范的方法。这是通过All在规范上使用 LINQ 运算符来实现的。

我们需要创建一个能够执行的新方法 (GetProductsUisngDynamicFilters)ANDOR规范NOT(以及它们的组合)。知道我们如何解决这个问题吗?

过滤方法

客户

摘要规范

通用规格

产品规格

实体

0 投票
2 回答
863 浏览

r - 删除具有特定字符串的文本文件中的列

我想删除带有特定字符串“Gtype”的列。来自 .txt 制表符分隔的文件。我已经在 R: 中尝试过这个命令df <- df[, -grep("GType.", colnames(df))]来完成这个任务。但是我的矩阵太大(超过 13 GB),R 无法处理它。(错误:无法分配大小的向量......)

我的输入文件:

我的预期输出:

我想知道它在 bash 中是否有效。如果有人有其他选择......

0 投票
1 回答
1408 浏览

domain-driven-design - DDD 规范模式——它们属于哪里?

我有一组用户,我需要知道该数组是否仅包含一个用户,如果是,那么该用户是否是超级用户。为此,我认为规范(isSatisifedBy)非常适合,但是,我应该在我的应用程序中的哪里保存这些文件?在规范文件夹下的有界上下文中?

提前致谢

0 投票
1 回答
4614 浏览

c# - 具有实体框架并使用 orderby 和 skip/take 的规范模式

我选了一个使用规范模式的项目,一个我以前没有用过的模式,我不得不去研究这个模式。我注意到它没有OrderBySkip/Take功能,而且我找不到任何地方显示如何使用该模式实现这一点。

我正在努力思考如何最好地将其添加到规范模式中。但是我遇到了一些问题,例如规范处理“ Expression<Func<T, bool>>”,而我认为我不能将其与 orderby 等一起存储

基本上有一个这样的类:

这允许创建规范,传入 where 子句。它还允许使用“And”、“Or”链接规则。例如:

如何为“OrderBy”和“Take”添加方法?

由于这是现有代码,我不能做任何会影响现有代码的更改,重构它是一项艰巨的工作。因此,任何解决方案都需要与现有的东西很好地配合。

0 投票
1 回答
1985 浏览

jpa - 使用 JPA Criteria-API 过滤版本字段上的实体

我有一个带有嵌入式 id 的实体,其中包含一个 id 和 version 字段。

我需要使用一些标准查询数据库作为实体的过滤器。例如,我将请求一个日期和一个 ID 列表。

我成功创建了一个查询,该查询检索其 id 在 ids 列表中的所有实体,并且提供的日期在 MyEntity 的“开始”和“结束”日期属性之间。

但是由于这个实体有一个复合 id,所以有许多 MyEntity 具有相同的“id”,可能对应于请求参数。如果有许多具有相同的“id”,我想添加另一个过滤器来检索具有最高“版本”号的 MyEntity。

以下是数据库中可能存在的示例:

如果之前所有的数据库记录都对应过滤参数,我只需要得到这一条,因为它们是对应id的版本号最高的:

目前,我执行请求,但我在服务内的方法中过滤版本,但如果版本已在数据库请求中过滤,我更喜欢它。我不需要检索过滤版本后将被丢弃的记录。

我正在寻找一种使用 JPA Criteria-API 进行自我加入的方法。

在以下链接中,似乎接受的答案将解决我的问题,因为我想知道如何在 JPA Criteria-API 中翻译建议的 SQL。

SQL 仅选择列上具有最大值的行

我的问题是当我尝试创建连接时。您需要提供来自第一个实体的属性,该属性链接到连接中的第二个实体。由于我想进行自联接,因此我的实体内部没有指向自身的属性。

如您所见,我使用的是 MyEntity 的静态元模型。有没有办法使用 JPA Criteria-API 进行自我加入?

或者,也许有另一种方法来构建我的请求,而不是像另一个 stackoverflow 问题中所建议的那样使用自左连接。

我正在使用 Spring Data JPA Specification 来构建我的 Predicate 查询。然后使用 findAll(Specification)。我已经有另外两种规范方法来为 withIds() 和 withDate() 生成谓词。这让我可以使用用户提供的“未确定数量”的参数创建查询。

非常感谢您的帮助和建议!

0 投票
2 回答
4798 浏览

javascript - 关于 Promises/A+ 规范,“thenable”和“promise”这两个术语有什么区别?

0 投票
1 回答
1568 浏览

c# - 使用实体框架的规范模式(按属性排序)

我想编写一些 API 来使用 LINQ2Entities 对服务器端(SQLServer)上的实体进行排序。

我有一个包含表达式的类,表示实体的排序字段和排序方向:

对于我的每个实体,我都有从上面继承的类。例如:

主要目标是在我的存储库的方法中使用 SortOption 类的属性,该方法返回实体:

*“dbSet”字段是System.Data.Entity.DbSet<TEntity>

如果我尝试使用 PostSorting 类按类型与字符串类型不同的任何属性对实体进行排序,我会收到如下错误:

例如(按已发布字段排序):

或(如果我想按修改字段排序)

of(如果我想按 ID 字段排序)

我在这个任务上工作了几天,但我找不到解决问题的答案。