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

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(使用前将#替换为@)

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

  • 用于办公管理应用程序无缝集成(和最终替换)的复杂(多模式)实体框架对象映射

    我是一个相当新手 狂热的程序员 这是我的第一个问题 但几个月来我一直在使用 stackoverflow 来获取有价值的信息 首先 一些背景 我目前在一家极小 我们目前运行一个相当过时 大约 2008 年 的医疗办公室管理系统 负责处理患者业
  • @Id 注解属性的 Kotlin 内联类

    在我的业务逻辑中 我必须处理很多实体 ID 所有这些 ID 都是类型String 这可能会导致混乱 尤其是当您将其中几个作为方法参数传递时 所以我考虑引入一点类型安全内联类 我知道 内联类在 v1 3 中仍然被标记为实验性的 然而 有没有人
  • 在 DDD/CQRS 中,ReadModel 是否应该充当 ViewModel,如果不是,那么映射的责任在哪里?

    假设读取模型ProductCatalogueItem由聚合 写入模型构建 与写入模型分开存储 并包含每个可供销售的产品 并具有以下属性 basics product code name price number of available s
  • EventSourced Saga 实施

    我已经编写了一个事件源聚合 现在实现了一个事件源传奇 我注意到两者是相似的 并创建了一个事件源对象作为两者派生的基类 我在这里看过一个演示http blog jonathanoliver com cqrs sagas with event
  • 强制聚合之间不变量的最佳方法?

    处理聚合之间一致性的最佳方法是什么 以 Vaughn Vernon 书中的示例为例 您有 BacklogItem 聚合和 SprintAggregate 当 BacklogItemEvent 引发时 事件处理程序会捕获它并尝试更新 Spri
  • DDD 中哪一层应该包含查询

    我有一个简单的 DDD 服务 带有文章聚合根 我使用 MediatR 和 CQRS 来分离命令和查询 在 DDD 域中不应依赖于应用程序和基础设施层 我有一个存储库 IArticleRepository 用于从文章数据库中组合一些数据 我有
  • 如何在领域层使用工作单元

    我正在尝试在 我的服务 类中使用工作单元模式 我有我的 CompanyService 课程 public class CompanyService ICompanyService private readonly ICompanyRepos
  • 实现领域驱动设计的函数式方法

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

    我有与下面列出的数据库表对应的以下模型 经理就是雇员 会计师也是雇员 让所有管理器都进入存储库的最佳方法是什么 如何实现GetAllManagers 方法 这是正确的TPT吗 CODE MyRepository MyEmployeeRepo
  • 使用 JPA 实体作为域模型是一个好习惯吗?

    或者创建一个由域模型组成的域层并与 JPA 实体对话以进行数据库访问 两种方法的优缺点是什么 谢谢 这确实取决于您对域进行编码的方式 一般来说 在 Java 中 我更喜欢创建一组单独的 JPA 注释的 DTO 来处理持久性 此类 DTO 将
  • 定义具有多种消息类型的消息传递域

    到目前为止 我见过的大多数 F 消息传递示例都使用 2 4 种消息类型 并且能够利用模式匹配将每条消息定向到其正确的处理函数 对于我的应用程序 由于处理和所需参数的不同性质 我需要数百种独特的消息类型 到目前为止 每个消息类型都是其自己的记
  • 有丰富的领域模型示例吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个简单的示例来说明使用富域模型的好处 理想情况下 我想要一个之前和之后的代码列表 应该尽可能
  • 存储库本身通常不经过测试?

    抱歉 我对存储库模式 单元测试和 orm 工具还不熟悉 我一直在研究单元测试和存储库模式 并得出一些结论 我想知道我是否正确 存储库模式有助于在使用它的控制器中替换单元测试 例如 对吧 因为创建上下文 在 EF 中 或会话 在 NH 中 的
  • 使用组合来表示“is – a”关系时出现的问题

    我正在为人力资源系统开发系统 有会计员工和程序员员工 加入公司的第一个月 员工没有被赋予任何角色 一名员工可以同时担任会计师和程序员 我有一个由以下代码所示的设计 现在 我需要通过实现新功能来增强系统 解雇所有会计师 终止意味着将员工的状态
  • 定时任务应该放在哪一层?

    我正在尝试使用分层架构来实现 DDD 应用程序 我有 基础设施层 实现应用程序的技术特定部分的层 领域层 包含领域模型的层 应用层 包含与领域模型交互的干扰的层 接口层 从外部接收事件的层 经典的 3 层 基础设施 架构非常清晰 但我的应用
  • 缺失的事件如何重播?

    我正在尝试了解有关 CQRS 和事件溯源 事件存储 的更多信息 我的理解是 在这种情况下通常不使用消息队列 总线 消息总线可用于促进微服务之间的通信 但它通常不专门用于 CQRS 然而 我目前的看法是 消息总线将非常有用 可以保证读取模型最
  • CQRS - 何时发送确认消息?

    Example 业务规则规定 客户下订单后应收到确认消息 电子邮件或类似消息 可以说 一个NewOrderRegisteredEvent从域调度并由发送确认消息的事件侦听器拾取 完成此操作后 其他一些事件处理程序会引发异常或出现其他问题 并
  • ASP.NET Web Api 的事件发布者

    我已经开始使用微服务 我需要创建一个事件发布机制 我计划使用 Amazon SQS 这个想法很简单 我将事件存储在与聚合相同的事务中的数据库中 如果用户更改他的电子邮件 事件UserChangedEmail将被存储在数据库中 我还有事件处理
  • 在DDD中,值对象的实际优势是什么?

    到目前为止 我知道实体对象有 ID 而值对象没有 但在最常见的示例中 人员实体附加了地址值对象 创建单独的地址对象而不是仅将地址属性保留在 Person 实体中的最大优点是什么 除了已经提到的事情之外 格雷格 杨 http weblogs
  • 域驱动设计中输入验证应该放在哪里?

    我想知道我们到底应该在哪里放置输入验证 想象一下 API 调用发送输入以应用用户的空闲时间 在服务层注入验证类并在服务内部调用验证方法是否正确 或者最好将其放在基础设施层甚至领域模型中 我只是想看看在域驱动设计方法中实现 API 输入验证的

随机推荐

  • 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