java+spring应用中如何使用设计模式排列文件结构
Posted
技术标签:
【中文标题】java+spring应用中如何使用设计模式排列文件结构【英文标题】:How to use a design pattern to arrange the file structure in a java+spring application 【发布时间】:2020-11-01 14:11:16 【问题描述】:我创建了一个 Web 应用程序,它从控制台获取用户数据并将数据存储在 MongoDB 中,然后使用 Spring rest api 将数据传递到 Angular 前端。 整个系统运行良好,现在我想根据设计模式重新排列文件夹结构,如下所示我尝试使用 MVC 模型但我不确定文件重新排列是否正确我对设计模式不太了解. 所以请帮我解决这个问题,如果下面的结构有误,请帮我改正。
控制器
BookController - 带有 rest api 的类,用于将数据传递到 Angular 前端(REST 控制器类)
型号
Book - 带有变量和相关方法的父类 Novel - 具有变量和相关方法的子类 诗歌 - 具有变量和相关方法的子类 MyBookManager - BookManager 接口实现类,其中包括 mongoDB 的 crud 操作
查看
BookManager - 与 MyBookManager 相关的接口 Console - 从控制台获取用户输入并调用 MyBookManager 中的方法以将其保存到 DB 的类
存储库
BookRepository - 扩展 MongoRepository 的接口
剩余课程
BookStoreApplication - 包含主要方法的类(运行类) ErrorHandle - 包含验证方法的类
【问题讨论】:
【参考方案1】:课程安排总体不错。我可以建议的唯一调整是在 Controller 包中移动 BookManager 和 MyBookManager。原因是因为它在视图(Console)和模型(数据库)之间,它可以改变模型(通过更新数据库),它可能包含一些关于如何正确解析用户输入的业务逻辑。
如果您想进一步将 BookManager 与 Controller 解耦,则可以将其称为 BookService 并将其放在名为 Service 的包中(与 MyBookService 一起)。
关于设计模式,MVC 是一种架构模式,而不是一种设计模式。我将您链接到其他问题以获取更多信息:
Is MVC a Design Pattern or Architectural pattern What's the difference between design patterns and architectural patterns?【讨论】:
BookManager 是一个接口,它包含抽象方法,实现在 MyBookManager 类中。所以你建议把接口移到控制器下? 是的,我建议将 BookManager 和实现移到 Controller 中。否则,您可以为 BookService 和 MyBookService 创建另一个名为 Service 的包。我更新了我的答案。如果你觉得它有用,请点赞 ;) 那么如果我创建一个服务包,我可以在服务包中包含 ErrorHandle 类吗? 好问题。您的 ErrorHandle 中有哪些类型的验证?我个人将带有@ExceptionHandler 方法的类放在Controller 包中,因为它们是在控制器层中触发的。 所以我从控制台获取书籍详细信息和内容作为用户输入,因此关于用户输入和处理这些错误的方法存在错误,例如 - 非数字错误处理方法等。是否可以将该类也包含在服务包中以上是关于java+spring应用中如何使用设计模式排列文件结构的主要内容,如果未能解决你的问题,请参考以下文章