我一直在尝试理解这种新型架构,其名称可以是洋葱架构、干净架构、端口和适配器等。
如果我采用端口和适配器的抽象,当我针对特定端口调整应用程序时,我可以从应用程序内部为端口提供一个实体吗?或者我是否总是应该调整实体以适应端口?
示例:
假设我有一个客户实体。我有一个使用我的应用程序的用户界面。我的 UI 通过适配器调用 getCustomerById(123)。反过来,我的适配器将调用我的应用程序,使用注入(inject)的存储库有效地检索客户,并且它将对其执行某种格式化并记录日志等等,一旦客户准备就绪,它就会返回到我的 UI。我的问题是,我的 Customer 对象按原样返回到我的 UI。这意味着我的 UI 引用了我的 Core 项目中的 Customer 类。然后,我的 UI 继续使用该 Customer 对象执行操作,可能会更改其名称等,并最终再次调用适配器来 updateCustomer(customer)。
这样做可以吗?我的 UI 使用应用程序核心中的 Customer 类可以吗?或者我应该将我的 Customer 调整为新的 Customer 对象(例如 UICustomer),并让我的 UI 使用该对象,在适配器级别在 Customer 和 UICustomer 之间来回映射?
最佳答案
很好的问题。我有一个可能有用的例子。 https://bitbucket.org/jeffreypalermo/onion-architecture
对于使用核心域模型对象的简单应用程序来说就可以了。它们被设计为没有令人讨厌的依赖触角,因此它们工作得很好并且非常便携。它们可以跨层传播而不会引起任何问题。
关于architecture - 在洋葱型架构中,实体是否应该跨越外层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21887157/