问题标签 [poeaa]

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 回答
229 浏览

uml - Footballer Mapper 和 Bowler Mapper 之间的双向关联

这个问题是关于 Martin Fowler 的名为 Patterns Of Enterprise Application Architecture 的书中的一个特定 UML 图。

在第 302 页的“继承映射器”类图中,为什么Footballer MapperBowler Mapper之间存在“双向关联” ?

0 投票
6 回答
723 浏览

sql-server - DB中用于生成主键的表?

您是否曾经使用单独的表来“生成”数据库的人工主键(以及为什么)?我的意思是有一个包含两列、表名和当前 ID 的表 - 您可以通过简单地锁定具有该表名的行、获取键的当前值、递增它来为某个表获取新的“ID”减一,然后解锁该行。为什么您更喜欢标准整数标识列?

PS“想法”来自企业应用程序架构的福勒模式,顺便说一句......

0 投票
2 回答
709 浏览

php - OOP App Architecture:惰性加载器位于哪一层?

我正在计划为应用程序组件实施继承映射器模式 http://martinfowler.com/eaaCatalog/inheritanceMappers.html

它需要具有的一个功能是域对象可以引用大量聚合项(10,000 个其他域对象)

所以我需要某种延迟加载集合从聚合根域对象传递到其他域对象。

为了使我的(php)模型脚本井井有条,我将它们存储在两个文件夹中:

但现在我绞尽脑汁想知道我的延迟加载集合在哪里。它似乎跨越了两层。在内部它是一种数据映射器,在外部它是一个域对象。

将它放在一个地方而不是另一个地方的任何建议/理由?


  • daccess = 数据访问
  • DDD = 领域驱动设计模式,Eric Evans - 书籍
  • PoEAA = 应用程序架构模式的模式,Martin Fowler - 书
0 投票
2 回答
400 浏览

php - 是否可以在 PHP 中实现分离接口?

我最近问了一个关于解决工作单元数据映射器类之间依赖关系的问题:依赖注入和工作单元模式- (由 Gabor de Mooij 回答 - thx)

在 PoEAA 中,Martin Fowler 建议使用分离接口来管理这些依赖关系。我的问题很简单——实际上是否可以在 PHP 中实现这种模式,或者它是否特定于 Java 接口?我到处搜索,很难在 PoEAA 之外的任何地方找到对这种模式的引用。

0 投票
3 回答
1165 浏览

.net - 存储库模式是不是矫枉过正

我使用存储库模式(DDD 和 POEAA)已经有一段时间了。然而,我们的一些团队成员认为这只是额外的抽象层,没有必要。我可以从他们的论点中看到一些好处。现代 ORM 解决方案(NHibernate 或 EF)几乎可以满足您的一切需求。我搜索并找到了一些这样的文章和关于这个话题的反驳。那么存储库模式是不是有点矫枉过正?

0 投票
2 回答
271 浏览

lambda - 尝试在业务域和数据域之间转换表达式树是否可行?

我有一个处理 LINQ to SQL 自动生成实体的存储库层。这些最终被映射到表面上的领域友好类型。我现在想为客户端代码提供一些更复杂的查询功能,而客户端代码只知道域对象类型。

我想用查询对象模式(在 Martin Fowler 的企业应用程序架构模式中命名)来实现这一点,但允许客户端代码使用域类型的 lambda 表达式。在幕后,我想将域感知 lambda 表达式转换为数据库感知 lambda,并将转换后的表达式发送到存储库,以便使用 LINQ to SQL 对数据库执行。

我目前有一个穷人的实现,它将客户端的映射能力限制为简单的属性,但我想对更复杂的查询开放一点。我不确定如何使用 AutoMapper 或任何其他现有的映射工具来解决这个问题,我也不确定 OTTOMH 我如何使用本土代码来做到这一点。

这是我想要的功能:

最终目标是让这样的事情发挥作用:

我的问题确实是这样的,我认为:

  1. 创建这样的映射器是否可行,如果可以...
  2. 使用 AutoMapper 之类的工具是否可行,如果可以...
  3. 是否可以利用我已经拥有的 AutoMapper 映射,DomainType或者DataEntityType我需要显式映射Query<DomainType>Query<DataEntityType>

我最终希望这样做是为了能够灵活地使用不一定是简单对象属性的任意映射函数。

0 投票
1 回答
2431 浏览

jakarta-ee - Java EE 模式 - 注册表和其他 - 相关性

我正在阅读《企业应用程序架构模式》一书。在浏览基本模式(例如注册表模式)时,我发现这些模式在 2002 年 11 月首次发布的可能性可能不是最好的解决方案。

以注册表模式为例。在我们的组织中,我们对数据库操作使用简单的 JDBC 调用,如果需要,将连接对象传递给单个事务。这种方法不是最好的——但使用注册表模式的替代方法似乎也不是很好,因为依赖项将不可见——可能是测试的一个问题。建议将依赖注入作为实现此行为的更好方法。

任何从事 Java EE Web/企业应用程序工作的人都可以对此发表评论 - 您会建议什么来分析每种模式的用法(其优缺点?)。最近有什么书详细介绍了这一点?

0 投票
3 回答
590 浏览

php - 所有的 Front Classes 都应该使用单例吗?

考虑 Martin Fowler 的企业应用架构模式和前端控制器模式:http ://martinfowler.com/eaaCatalog/frontController.html 显然,它使用了单例模式。好吧,我在 php 应用程序中有一个类包,它们可以一起工作(如 Zend 的控制器包),并且有一个类使它们都可用,并且由于它与 Front Controller 的大部分概念相似,我将其命名为 PackageName_Front。但它不应该是一个单例类(与 Front Controller 相对),所以我仍然让它有 Front 这个名字吗?如果不是,我给它取什么名字?因为它是一个相当大的包,所以我只需要它尽可能地遵循约定(不是以教条的方式!)以便其他开发人员可以阅读。

更多信息:它与控制器无关。它只是一个像 Zend_Form 一样工作的对象(它将 Zend_Form_Element_X 和 Zend_Validate 等所有其他对象的使用合并到一个对象中)但我不能只将它命名为 PackageName。它必须是PackageName_Something,我只是不知道Something应该是什么。也许是“处理程序”?...我只是想确保当有人读到它的名字时,不会对它在整个包中的作用感到困惑 :)

0 投票
1 回答
564 浏览

design-patterns - 企业应用架构模式——测试题?

我正在大学学习“软件模式和设计”课程,该课程的书是“企业应用程序架构的模式 - Fowler”

周三考试,老师没有任何过去的考试,我可以通过看看考试会是什么样子。

有没有人上过这本书的课程并且有任何我可以在测试前完成的测试问题?

0 投票
2 回答
1301 浏览

php - 为什么活动记录模式不适用于富域模型?

我正在阅读 POEAA 的架构模式章节,Fowler 说:“随着域逻辑变得越来越复杂,并且您开始转向丰富的域模型 (116),Active Record 的简单方法 (160) 开始崩溃. 域类与表的一对一匹配开始失败,因为您将域逻辑分解为更小的类。关系数据库不处理继承,因此很难使用策略 [Gang of Four] 和其他简洁的 OO 模式. 随着域逻辑变得活跃,您希望能够测试它而不必一直与数据库对话。”

我真的不明白这一点。“域类与表的一对一匹配”是指仅适用于没有关联或单表继承层次结构的类吗?

为什么将域逻辑分解成更小的类会导致模式失败?