如何调整规范模式来评估对象的组合?

2024-02-26

我知道规范模式描述了如何使用类的层次结构来实现ISpecification<T>评估类型 T 的候选对象是否符合特定规范(= 满足业务规则)。

我的问题:我想要实现的业务规则需要评估多个对象(例如,客户和合同)。

我的双重问题:

  • 是否有规范模式的典型改编来实现这一目标?我只能考虑删除实施ISpecification<T>根据我的规范类,并在isSatisfiedBy()方法。但这样做,我就失去了将此规范与其他规范结合起来的能力。

  • 这个问题是否揭示了我的设计中的缺陷? (即我需要使用客户来评估什么,并且合同应该在另一个对象上评估,例如订阅,它可以包含所有必要的信息)?


在这种情况下(取决于规范具体应该做什么,我将使用其中一个对象作为规范主题,使用其他对象作为参数。

Example:

public class ShouldCreateEmailAccountSpecification : ISpecification<Customer>
{
    public ShouldCreateEmailAccountSpecification(Contract selectedContract)
    {
       SelectedContract = selectedContract;
    }

    public Contract SelectedContract { get; private set; }

    public bool IsSatisfiedBy(Customer subject)
    {
        return false;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何调整规范模式来评估对象的组合? 的相关文章

  • 存储库是单例还是静态还是都不是?

    我有一个 ASP NET 网站 它使用域驱动设计并使用存储库进行数据库操作 我想知道单例存储库和静态存储库以及每次访问都会新增的简单存储库类的优缺点是什么 此外 如果有人可以比较并指导我使用其中的哪一个 我将不胜感激 静态和单例对于存储库模
  • 具有最佳实践的示例 N 层 ASP.NET MVC3 应用程序(使用 EF 4.1)

    我正在寻找一个演示最佳实践的示例 ASP NET MVC3 N 层应用程序 首先使用域驱动设计和实体框架 4 1 代码 我发现了以下内容 您推荐其中哪一个 或此列表中没有的其他任何一个 http efmvc codeplex com htt
  • 值对象应该保存对实体的引用吗?

    值对象是否应该引用 DDD 方法中的实体 EDIT Dmitry 这大概就是我的情况 这里我附上类图 其中Account保留对集合的引用IInvoiceable项目 我治疗与Tenant作为实体 但它只拥有 1 个帐户 我不认为Accoun
  • 使用领域驱动设计的node.js

    我正在将应用程序从 C 迁移到 Node js 我一边学习一边学习node js 所以我是一个node js 新手 我正在阅读 领域驱动设计的模式 原则和实践 一书 发现我当前的项目可以从中受益的很多重要信息 例如 书中有一个示例电子商务应
  • 为什么域模型不应该用作 REST API 中的资源?

    我遇到过这样一种说法 按照 DDD 设计的领域模型不应该用作 REST API 中的资源 source https www thoughtworks com insights blog rest api design resource mo
  • 领域驱动设计中的 WCF 序列化和值对象模式

    Eric Evans 所著的 领域驱动设计 一书描述了称为值对象的模式 值对象的重要特征之一是它是不可变的 作为一个例子 我有一个值对象 Clinic 其中must有名字和id 为了使其成为值对象 我不提供名称和 ID 的设置器 另外 为了
  • 恢复域对象的最佳方法

    这是一个如此简单而常见的场景 我想知道到目前为止我是如何做到的以及为什么现在遇到问题 我有这个对象 基础设施程序集的一部分 public class Queue public class QueueItem public QueueItem
  • 如何定义分层数据结构的DDD聚合根?

    我目前正在尝试将领域驱动设计原则应用于我的开发实践 我一直致力于如何为按层次结构组织的数据定义聚合根 我们以文件夹结构为例 每个文件夹可以有 0 N 个子文件夹 子文件夹 0 N 也可以有 0 N 个子文件夹 依此类推 我对文件夹及其所有直
  • 领域驱动设计和聚合参考

    我正在设计领域模型 但有些东西似乎不太好 我从一个主要的聚合开始 它引用了其他聚合 而其他聚合也引用了更多聚合 我可以从主聚合开始遍历孔域模型 我看到的问题是我将在内存中保存聚合的所有实例 这是一个好的设计吗 我可以通过延迟加载解决内存问题
  • DDD和应用层

    我在DDD中添加 Stateful Stateless WebService等是应用层 应用服务 吗 从下面的链接来看 这似乎是正确的 第二个问题 我创建了一个存储库类 所有涉及存储库的方法调用都应该包装在应用程序服务中吗 或者我可以直接在
  • 实现领域驱动设计的函数式方法

    我在使用 C 编写领域驱动应用程序方面拥有丰富的经验 我编写的应用程序越多 我就越发现我想要采用一种不太适合标准 C OO 技术的方法 我想编写尽可能多的纯函数 因为它们真的很容易测试 我想以更具声明性的方式编写我的业务逻辑 所以我一直在研
  • 实体框架:获取存储库中的子类对象

    我有与下面列出的数据库表对应的以下模型 经理就是雇员 会计师也是雇员 让所有管理器都进入存储库的最佳方法是什么 如何实现GetAllManagers 方法 这是正确的TPT吗 CODE MyRepository MyEmployeeRepo
  • 再次将服务注入域对象

    我有一个对地理数据进行操作的特定域 我正在 TypeScript 和 NodeJS 中实现这个项目 并有以下类 Point 包含纬度和经度的值对象 Area 包含点集作为形状定义的值对象 Sector 实体 它不是持久的 但它是可变的 包含
  • 存储库本身通常不经过测试?

    抱歉 我对存储库模式 单元测试和 orm 工具还不熟悉 我一直在研究单元测试和存储库模式 并得出一些结论 我想知道我是否正确 存储库模式有助于在使用它的控制器中替换单元测试 例如 对吧 因为创建上下文 在 EF 中 或会话 在 NH 中 的
  • 事件源和 SQL Server 多个关系表

    我们使用 SQL Server 2016 的事件源 我们有完整的客户产品应用程序 每个应用程序都标记为CustomerId并在事件商店中获取单个指南行项目 这是写入事件存储指南的主要标识符 产品应用程序附带许多不同的关系事物 没有引导 但有
  • 使用流程管理器(又名 saga)在同一有界上下文中跨聚合根实现最终一致性

    假设您的有界上下文中有两个聚合 它们之间存在一些约束 使用 DDD 这些内部聚合约束不能在同一事务中强制执行 即聚合边界是事务边界 您是否会考虑使用 Microsoft CQRS 旅程中所谓的 流程管理器 来协调同一有界上下文中的两个聚合
  • 身份验证和用户任务

    我正在考虑开发一个具有明确定义域的系统 主要基于网络 域的一部分包括像这样的实体Diary Booking Customer etc 不过我创建了另一个名为User其目的仅用于身份验证和授权 污染Customer具有特定于身份验证的数据的实
  • NHibernate IQueryable 集合作为 root 的属性

    我有一个根对象 它有一个集合属性 例如 I have a Shelf object that has Books Now public class Shelf public ICollection
  • 领域驱动设计示例(特别是 .NET 重点)

    好的 我已经订购了 但是当我等待它到达时 我正在考虑开始在我当前的项目中应用这些技术 我现在确实很好地掌握了这些概念 但是当我尝试应用它们时 我陷入了执行过程中 最终在各个项目中漏掉了我的职责 因此 我正在寻找可以引导我走向正确方向的资源
  • DDD 哪个是根聚合根?

    许多诸如订单和订单行之类的示例都是有意义的 例如 Order is an AR其中包含OrderLines Customer is an AR其中包含Orders 问题是 什么是AR其中包含Customer 我想它可能是 商店 之类的东西

随机推荐

  • Process的Exited事件没有发生?

    在我的应用程序中 我打开一个 Excel 工作表以向用户显示我的 Excel 文档之一 但在显示 Excel 之前 我将其保存到本地计算机中的一个文件夹中 该文件夹实际上将用于显示 当用户关闭应用程序时 我希望关闭打开的 Excel 文件并
  • 如何用 Unicode 表示上标斜杠?

    有什么办法可以用 Unicode 写上标斜杠吗 我的目标是以比123 456 789 那么 unicode 充满了字符 其含义取决于其解释 对于上标斜杠 您可以使用 加拿大音节最终急性 https unicode table com en
  • JavaScript 和继承

    说我有一个Class function Foo this foo1 null this foo2 function return false 我希望其他对象继承它的变量和函数 function Bar function Baz 然后实例化我
  • 获取 html 后使用 MailApp 发送表单。将 Google 表单嵌入到电子邮件中。生成的电子邮件仅包含文本

    我想在电子邮件中嵌入 Google 表单并使用 MailApp 发送 我正在尝试使用以下位置的代码 https stackoverflow com a 23671529 4305236 https stackoverflow com a 2
  • Sql 查询仅返回第一行

    我尝试显示选择查询的结果 但我只得到重复的第一行而不是所有行 这是我的代码 query SELECT Email from client result db gt query query gt fetch foreach result as
  • Spring 利用 Mongo 通过 JPA 实现

    我对 Spring 框架相当陌生 并且在设置我当前正在处理的项目时遇到了一些问题 我需要能够连接到两个不同的数据库 一个是 MongoDB 另一个是 MSSQL 我正在使用 JPA 连接到 MSSQL 我遇到的问题是 当我希望它调用 MSS
  • 是否可以从 ASP.NET 4.0 中的服务器错误页面中删除信息?

    为了更好地向用户隐藏信息 我正在尝试删除版本信息标准 ASP NET 错误屏幕中的部分 自定义错误已启用 但是在某些情况下 如果您设法遇到超出您控制范围的错误 也许是服务器问题 那么您可以联系 YSOD 我尝试更改 web config 以
  • 列表包中 R 代码块的颜色

    我希望在 LaTeX 文档中插入 R 代码块 默认设置为listings包还改变了字体 但没有改变我需要的颜色 虽然我知道我可以使用lstset功能 我不太确定组合起来会好看 因此 任何人都可以分享他们的lstset设置为listings封
  • React Native - 设备后退按钮处理

    我想检查当按下设备后退按钮时是否有多个屏幕在堆栈上 如果是 我想显示上一个屏幕 如果否 我想退出应用程序 我已经检查了一些例子 但那些使用BackAndroid and Navigator 但它们都已被弃用 BackHandler是替代Ba
  • Chrome 中大图像的淡入淡出

    我在大图像中淡入淡出时遇到一些问题 但仅限于 Chrome 这是绝对基本的设置 document ready function var img new Image img hide load function this fadeIn 300
  • GWT:如何抑制超链接,以便它不会更改我的历史标记

    我想让我的超链接像按钮一样工作 仅响应 Click 事件 但是 当您单击它们时 它们会自动更改历史记录令牌 这会弄乱我的应用程序中的历史记录机制 有没有办法抑制超链接的默认行为 以便它不会更改历史标记 我尝试将 targetHistoryT
  • Javascript 数组排序是异步的吗? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 Javascript Array sort 函数是异步的吗 我不这么认为 但是当我运行以下代码时 它似乎确实是 alph
  • vs code 终端每次都会更改为 powershell [重复]

    这个问题在这里已经有答案了 在 Vs code 更新 1 60 0 后 终端打开 powershell 但默认保持不变 git bash 如果我创建新终端 那么它会打开 git bash 当我启动应用程序时 它看起来像 然后我必须创建新的
  • Python初始化

    我有这个代码 def init self a b c d self a a self b b etc 我正在考虑将其替换为 def init self a b c d args locals for key in args self dic
  • ASP .NET MVC5 中的 CORS

    我有一个 MVC 项目 其中有几个想要公开跨域的 JSON 控制器方法 不是整个网站 只是这两种方法 我基本上想要这篇文章中针对 cors 所说的确切内容 http enable cors org server aspnet html ht
  • 过滤 fiddler 仅捕获特定域的请求

    我不确定如何修改 CustomRules js 文件以仅显示特定域的请求 有谁知道如何做到这一点 这很容易做到 在过滤器选项卡上 单击 仅在过滤器包含时显示 然后键入您的域
  • 如何使用 Enthought python (Canopy) 安装 CVXOPT

    在开始之前 让我为这篇文章添加替代标题 如何使用 Intel MKL 编译 CVXOPT 如何更改 CVXOPT 中的 init py 以使用 Intel MKL 进行编译 让我解释一下这个问题 我正在尝试使用 Enthought pyth
  • JUnit4 和 JUnit5 测试未在 IntelliJ 中运行

    我试图在 IntelliJ IDEA 2017 1 5 的同一个项目中使用 JUnit4 和 JUnit5 测试 到目前为止 所有测试都基于 JUnit4 我添加了jupiter platform and vintage对我的 pom xm
  • clang++ 和 O2 的未定义引用

    我正在一个项目上尝试 CLang 3 4 和 libc 但在发布模式下出现奇怪的链接错误 home wichtounet dev eddic src ast Operator cpp 17 error undefined reference
  • 如何调整规范模式来评估对象的组合?

    我知道规范模式描述了如何使用类的层次结构来实现ISpecification