0

我正在 Zend Framework 中开发一个应用程序,并具有以下层:控制器、服务、域模型和映射器。

我的域对象需要表示为用于多种不同目的的数组。例如,映射器在持久化对象之前将其转换为数组;表单需要一个数组作为其populate()方法的参数;还有一些其他的例子。

所以,我的问题是,我应该在哪一层进行数组的转换?对象的翻译根据使用它的上下文略有不同,例如,在持久化新对象时不需要对象 ID,但在持久化更新或填充表单时需要对象 ID。

据我所知,有两种选择。选项 1 是在每个组件(即映射器、表单等)中进行翻译。选项2是将它放在域对象本身中,并让客户端代码传递一个参数以确定他们需要哪些数组变体,例如$array = $domObject->toArray('populateForm');

选项 1 将涉及大量重复,但它似乎遵守关注点分离规则。选项 2 将避免重复,但我不确定我的域对象是否应该关注以各种不同的方式表示自己。

也许域对象应该只生成一个“香草”数组,并且每个组件都应该为自己的使用定制它?还有一点与模式有关。我应该寻找应用装饰器或其他模式吗?

非常感谢您的想法!

4

1 回答 1

1

我对此的想法是首先,你认为你这样做是正确的吗?如果没有对该项目的任何真正了解,这听起来相当复杂。感觉就像您正在尝试做一个对 Zend 很陌生的人会做的典型解决方案,然后意识到这是不必要的。再说一次,我对你的项目不太了解。

其次,我可能会将这样的功能放在服务层中。对我来说,服务层几乎总是关于操作对象。

于 2012-09-20T06:24:18.990 回答