问题标签 [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.
design-patterns - 使用 Zend Framework 2 将数据库列映射到域模型
我一直在做大量的研究,但无法找到这个看似流行的问题的答案。
我有一个包含一些属性的域模型 - 比如说firstName
和lastName
- 但在我的数据库中我将它们存储为fname
and lname
。
根据良好PoEAA的规则,模型应该不知道它是如何存储的,如果有的话。所以我的问题是,这些字段的映射到哪里去了?
查看实现接口的现有类的源代码,Zend\Stdlib\Hydrator\AbstractHyrdrator
我看不到它们中的任何一个提供映射功能。
有没有人看到一个不污染模型的干净解决方案?
更新:更好更简单的解决方案
自从我问这个问题以来已经有一段时间了,但是这里将是一个非常简单的解决方案,可以将列映射到对象而无需太多开销。使用 ZF2 的内置命名策略功能可以实现所需的效果。
输出:
php - 使用表数据网关模式时,对象的关联对象应该在哪里恢复?
我有一个类User
,它的属性address
是Address
. 我正在使用表数据网关模式来管理User
对象的持久性。
假设Address
类有自己的表网关,谁应该负责设置User
'address
属性?
作为我在 PHP 中询问的示例:
ruby-on-rails - 两步视图模式
Martin Fowler 的PoEAA 目录就像 Ruby gems 和 Rails 模块的存储库,例如 Rails 的 ActiveRecord ORM 基于 Fowler 的ActiveRecord,DataMaper gem基于Data Mapper 模式。Martin Fowler 的两步视图模式在 Ruby 中是否有任何有用的实现,例如与模板引擎结合使用?
c++ - 在 C++ 中使用映射器处理派生类创建
我现在正在阅读 Martin Fowler 关于对象关系结构模式的 PoEAA。作为一个学习它们的项目,我想我会用 C++ 构建一个迷你电子商务系统。我无法弄清楚如何从映射器返回对象。
我有一个Product
基类,它有派生类Hat
和Shirt
. Products
有一个type
成员来标识它们是哪个派生类。我还有一个ProductMapper
类,它带有派生类HatMapper
和ShirtMapper
,所有这些都实现了一堆查找器方法,这些方法让我可以尝试检索某些帽子和衬衫。
在我将实例化这些映射器并检索产品的应用程序的逻辑部分中,我遇到了麻烦。我可以毫无问题地实例化 aHatMapper
并拉回对象,与 a和对象相同。这些模式在这些情况下工作得很好(特别是我使用类表继承,即一个带有产品数据的产品表,一个带有帽子特定数据的帽子表,以及一个带有衬衫特定数据的衬衫表)。Hat
ShirtMapper
Shirt
我的问题是,如果我想取回所有产品,包括帽子和衬衫,我该怎么办?我可以实例化 aProductMapper
并获取所有产品数据,但这似乎是错误的方法,因为我必须循环遍历所有Products
我检索和构建的数据,Hats
并Shirts
根据它们在我的程序逻辑部分中的类型。此外,当我添加新产品类型时,我必须修改任何以这种方式处理这种情况的代码。似乎很糟糕。
Fowler 书中有使用派生映射器的基本映射器的映射器示例,这对我来说似乎完全错误(每次添加新产品时都必须修改基本映射器,不是很好)。这是一个如何在那里完成的快速示例:
这是我在程序的逻辑部分中使用它的方法。书中没有提供这样的例子:
这将引入循环依赖。此外,假设我以某种方式消除了循环依赖关系,则HatMapper
和ShirtMapper
类的结果是Hat
对象和Shirt
对象。因此,当我从 中返回时ProductMapper
,我会感到沮丧,所以我不得不再次在我的逻辑中操作结果,这再次引入了在我引入新产品类型时修改代码的问题。
我不知道该怎么办。在一个完美的世界里,我想要一个Product
类和一个ProductMapper
类,我可以快速扩展这两个类,引入新的产品类型而无需修改现有代码(至少太多)。
我希望能够使用 PoEAA 中的这些模式,它们看起来确实不错且有用,但我不确定这是否只是我无法在 C++ 中做的事情,或者我错过了一些阻止我做的事情。替代模式和方法也非常受欢迎。
oop - 对象集合、对象聚合、对象关联和对象组合之间有什么区别?
我看到使用了这些术语,我认为我自己对它们的使用可能不正确。我想知道它们到底有什么不同。
对象集合- ???
对象聚合- ???
对象关联- ???
对象组合- ???
似乎这些术语是最近在谈论 ORM、数据映射器和存储库时出现的。例如,Fowler在这里提到了对象集合。这些术语的具体含义是什么,我应该如何在口语中有效地使用它们?
oop - 从备份恢复应用程序时如何临时规避域对象的创建合同?
我们应用程序的领域模型对象具有带有非平凡契约的构造函数。例如,Entry 对象需要 Catalog 对象才能创建。问题是,当我从 XML 文件批量恢复对象时,必须暂时违反这些合同,因为在完全处理备份文件之前,依赖对象可能不可用。
这个问题有什么既定的模式或解决方案吗?
html - XSLT position() 函数在两步视图中未按预期工作
在尝试实现 Martin Fowler 所描述的模式“两步视图”时,我在让 HTML 表的交替行着色工作时遇到了一些问题。这使用 XSLTposition()
函数。您可以在下面看到 XSLT 模板table/row
。但是,在输出中,元素的bgcolor
属性tr
始终为"linen"
,表明 的值position()
不会随着我们迭代table/row
元素而改变。为什么会这样?
输入 XML:
输出 HTML: