问题标签 [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 回答
1543 浏览

c# - .NET 存储库模式通用查询方法

我正在使用存储库模式,我有一个基本存储库,我使用实体框架和 web api;我的问题是我想让我的客户能够动态查询任何数据;Dynamics CRM 中使用的查询表达式和获取 xml 之类的东西;我尝试了规范模式,但这还不够,因为我想允许客户端代码对具有不同列的数据进行排序,例如 Name asc Address desc 并且还允许对返回的结果进行分页;所以我的方法要求是

  1. 不依赖于 ORM 技术的通用过滤器,因为我将来可能会更改实体框架
  2. 通用排序方法;允许多个排序列,例如 Name asc Address desc
  3. 客户端确定返回的列或所有列,例如 columnSet 为“地址、名称和 ID”或返回整个记录
  4. 允许分页,例如页面索引和页面大小
  5. 支持返回记录数的阈值,因为较大的结果可能会影响性能

这是我最初的方法,但我不知道它是否更好

0 投票
1 回答
211 浏览

design-patterns - 策略规范模式中最明确的规范

假设我有很多业务逻辑来确定基于多个因素的应用程序行为。此外,我有一些非常好的地方,我知道我可以用策略模式替换行为。另外,考虑到我正在尝试利用各种模式来解决问题

  • 策略模式
  • 规范模式
  • 工厂模式

是否可以使用规范模式来确定工厂中的策略并保留开放封闭原则?

我有一个工厂,我发现自己像以前的代码一样创建 switch 语句来选择正确的策略。这似乎适得其反。

我想将所有这些逻辑决策都推到规范中,但随后出现了关于订购规范或首先选择最明确的规范的问题。

知道如何解决这个问题吗?

0 投票
1 回答
507 浏览

git - git忽略特定目录

我最近想在 git 上上传我的 dotnetnuke 网站,现在我的网站上有很多我不想通过 git 上传的图片。

我在 GIT 上搜索并遇到了在存储库创建期间创建的 .gitignore 文件,GIT 有一个关于忽略文件/文件夹及其特定子文件夹的文档,但它似乎不适用于我的情况。

这是我的文件夹结构:

*******更新*******

现在我想忽略 Portals 下的所有文件夹,除了 Portals/_default。我根据 GIT 的规范进行了尝试:

以下是我尝试过的:

但这似乎根本不起作用。

任何人都可以让我朝着正确的方向前进。

0 投票
1 回答
195 浏览

c# - c# Process Complex Rules

I have a situation where it is possible for a user to develop complex requirements using a UI. Specifically it deals with authorising users to perform certain work based on their qualifications.

For example the user must have;

  1. All of These: Qual1, Qual2, Qual3
    • OR (One of These: (Qual4, Qual5) AND (All of These: Qual11, Qual12, Qual13))
  2. AND
    • One or More of These: Qual6, Qual7, Qual8
    • AND One of These: Qual9, Qual10

I've had a look at the Specification Pattern but I'm not sure if this is the best solution for the problem.

The requirements for each role are stored in the database using an Authorisation table linked to a Qualifications table and the user's training via a Training table linked to the Qualifications table.

0 投票
1 回答
166 浏览

automapper - 在使用规范模式组合对象时使用 Automapper

规范模式可用于组合对象,如下例所示:

这导致手动将数据从 DTO 映射到规范对象。 有没有办法,我们可以在使用规范模式的同时使用 automapper 填充对象?Automapper 是否以任何方式支持这一点?

谢谢

0 投票
2 回答
2653 浏览

c# - 是 EF 实体或域对象的规范模式

我是域驱动设计的新手,所以如果这个问题是微不足道的,请原谅。我正在阅读规范模式,我相信理解它的意图。网络上的大多数示例,在两个地方显示了它的用法:

  1. 内部存储库方法

  2. 内部域服务/应用程序服务。

但这只有在 EF 实体和域对象相同时才有效。而且我猜这不是一个好的做法(使用 EF 实体作为域对象)。现在我的问题是——

我们应该为域对象和 EF 实体编写不同的规范规则,还是有办法为两者重用相同的规则?我想如果我们不使用 c# 表达式并使用反射,我们可以以某种方式实现。

0 投票
1 回答
809 浏览

c#-4.0 - 如何实现规范模式?

在我的项目中;我已经包含了下面给出的特定模式类。我不知道如何实现这一点。这些代码由以前的开发人员包含。

如何用一个简单的例子来实现上述规范?这个规范有什么用?

0 投票
0 回答
41 浏览

math - 组合逻辑表达式,同时对表达式进行优先级排序

我正在为一个基于规范模式的系统创建一个复杂的授权模块。访问规则定义如下:

  • operationName定义规则适用于哪个操作。

  • ASubjectSpecification定义规则是否应适用于特定对象Subject。例如,以下内容将匹配部门 A中的任何主题。

    /li>
  • AnAccessSpecification定义了实际的规则表达式。

  • AccessType定义匹配规则是授予还是拒绝访问。

  • RulePriorityStrategy定义如何继承规则的 A。

对于这个问题,假设我们的应用程序Subject具有以下结构{divisionId, sectionId, groupId, userId },并且RulePriority状态越具体,SubjectSpecification它的优先级就越高。

例如,针对特定对象的规则userId将优先于针对该division用户所属的规则。

现在,这是我不知道如何解决的真正挑战。我希望以高优先级规则从最低优先级规则继承的方式继承规则,同时让它们自己的条件覆盖冲突的最低优先级规则的部分。另请注意,如果没有匹配的授权规则,则默认拒绝操作。

例如,使用以下规则:

在这里,我希望用户 xyz(属于 A 部门)在C || D || (A && B && !E).

我计划使用最终继承grantallow规则的方式如下:

在这种情况下,似乎以以下方式组合会起作用,但并非在所有情况下(例如,当允许必须覆盖拒绝时)。

我做了一些研究,我确信这是逻辑表达式的标准学术知识,但我找不到以某种方式解决问题的标准算法,我确信提出解决方案会让我很很多时间还是不会有效率的。

0 投票
3 回答
659 浏览

c# - 规范模式异步

我正在尝试将规范模式应用于我的验证逻辑。但是我在异步验证方面遇到了一些问题。

假设我有一个AddRequest需要验证的实体(具有 2 个字符串属性 FileName 和 Content)。

我需要创建 3 个验证器:

  1. 验证 FileName 是否不包含无效字符

  2. 验证内容是否正确

  3. 异步验证数据库中是否存在具有 FileName 的文件。在这种情况下,我应该有类似的东西Task<bool> IsSatisfiedByAsync

但是我怎样才能同时实现IsSatisfiedByandIsSatisfiedByAsync呢?我应该创建 2 个类似的接口ISpecificationIAsyncSpecification还是可以合二为一?

我的版本ISpecification(我只需要 And)

和规格

要验证文件是否存在,我应该使用:

IsSatisfiedBy如果我真的需要异步执行该检查,我该如何编写?

例如这里我的 FileName 验证器 (1)

我需要创建 FileExistsSpecification 并使用如下:

FileExistsSpecification但是如果我需要异步,我该如何创建?

0 投票
1 回答
1178 浏览

java - java中具有规范模式的存储库模式

我正在尝试实现存储库模式来查询用户以及与每个用户关联的相应设置。我有一个存储库接口,其中包含每个存储库要实现的 crud 操作。

我正在阅读规范模式,但我不明白如何将这个概念应用于我的用例。

我有两个实现 Repository 接口的存储库。我的课程将具有以下操作,这些操作将转换为界面中提到的 crud 操作

如何创建我的规范类或接口,以便我的规范满足所有用例。

我指的是下面的 github 链接来实现,但我迷路了。

https://github.com/patrikfr/specification/blob/master/specification/src/com/granular8/specification/genericspec/Specification.java

请帮忙。