但是,可以由多个层使用的助手呢?例如年龄计算.业务逻辑的模型层可能需要年龄.它由多个实体使用,因此它不应该在特定实体中.此外,还有一些地方需要年龄仅用于UI中的显示目的.同样,我有多个字符串函数,可以由多个图层使用.例如,我的自定义Right和Left方法可以用于UI中的格式化,但它们也可以在模型中使用,例如基于前缀的条件逻辑.
那么这些常用方法应该去哪里?我的设置是这样的:
> UI
>申请
>模型
>基础设施
模型是核心,不依赖于基础架构,因此常见的帮助程序无法进入基础架构.我正在考虑两种选择:
1)具有可以由任何层使用的另一个名为Common或类似的层.这将在Model和Common之间创建依赖关系.
2)在需要的任何层中复制辅助逻辑.例如,在UI中有一个Age帮助器,并在Model中有一个Age帮助器.这会违反DRY,但不会要求域依赖于“公共”层.
哪个选项更好?模型层是否可以依赖“公共”图层?
更新:
在问这个问题后的2.5年里,我得出结论:
> Right,Left等补偿框架限制的东西,属于“Common”实用程序/辅助组件,甚至模型/域层都依赖于它.
>“Common”实用程序/帮助程序组件不应该很大.凭借更多的经验,我发现许多我认为是辅助工具的东西实际上都属于领域模型.
> Age属于域层中自己的类.就像地址,电话号码和金钱一样,我认为这些东西是价值对象.理解值对象确实是我理解创建可以包含在其他类中的可重用域类的关键.
年龄计算示例更有趣,因为它封装了行为/逻辑,这非常是应用程序/域的固有部分.在这种情况下,值得根据具体情况进行评估是否值得重复每一层中的行为(违反DRY以支持SRP).这是一个艰难的决定.虽然它们现在可能完全相同,但通过复制行为,您将使这两种方法在未来有机会相互分离.如果他们有不同的改变理由,通常会发生这种情况.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。