oop - 了解模型层及其复杂性
问题描述
我使用 MVC 框架 (PHP) 已经有一段时间了,我相信我非常了解层分离的概念。
对于尚未出现的人,我正在谈论:
- M => 模型,数据层;
- V => View,应用程序的 UI;
- C => Controller,处理业务逻辑和传入请求;
最近我遇到了一些通过使用其他层和扩展模型来扩展这个概念的项目。这些层使用诸如服务、存储库、转换器、值对象、数据映射器等类。
我也了解 DDD 的基本思想,但是,我想知道上面提到的这种类型的架构叫什么,这些附加层是否与 DDD 和/或任何设计模式相关联,以及你们是否可以共享一些资源(博客帖子,书籍,视频等)从该社区的其他用户那里学习这些东西。
作为参考,我在这个问题上找到了 tereško 的回答,这与我正在寻找的内容非常相似。
非常感谢
解决方案
这些层使用诸如服务、存储库、转换器、值对象、数据映射器等类。
很难将这些归因于任何特定的架构。例如,值对象又名数据传输对象 (DTO),又名普通旧 CLR/Java 对象 (POCO/POJO),通常在基于 .Net/Java 的 OO 解决方案中找到。
更根本的是,正如您可能已经知道的那样,逻辑层('...只是一种组织代码的方式。'*)是软件架构中的一个基本概念,所以你会发现它们无处不在,而不是特定的到任何一种架构。
- 请参阅 Panos 对“层”和“层”有什么区别?'。
分享一些资源(博客文章、书籍、视频等)
在架构、使用层的架构样式以及您列出的概念适合的方面:
- 5 层架构(我在 2011 年记录的一个,我仍在使用)
- Ports & Adapters aka Hexagonal Architecture目前似乎有很多关于 Hexagonal 架构的文章,其中这篇文章是我见过的最好的。
这两者中的许多关键概念实际上非常相似。
这两者背后的一般思想非常相似。我敢肯定,您会在那里找到其他架构,但它们有多大区别是另一个问题。
我将把它变成一个社区 wiki,这样其他人就可以添加他们知道的任何资源。
推荐阅读
- python - 如何在 Google Cloud Shell 上安装库 python-docx / docx?
- arrays - window.enableMouseFlow 在 componentDidMount() 中未定义,但在 render() 中可用
- mysql - 为什么数组不能保存在sql中
- javascript - 第二个异步等待函数未调用
- git - 如何通过命令行提交文件?
- java - 为什么 Java 不能在字符串中正确显示 unicode?
- java - 复合主键上的 Spring 数据和 @EntityGraph
- java - 捕获 servlet 中的语句引发的异常会停止执行(不显示输出)
- javascript - 如何将简单参数传递给模态
- c# - Task.Run 不在后台运行,而是在 Dispatcher 上运行