我在应用程序结构中有一些关于“最佳实践”的问题。我使用了瘦模型,并且具有完成大部分(全部)数据库交互的服务层。模型在需要数据库事务时调用服务层。
我还有一个可以返回表单,模型和服务层类的工厂类。这个工厂类也可以返回一个“搜索”类,它作为一个非常简单的DBAL,由我的服务层使用。
此搜索类具有辅助方法,例如getAll()和getById()。
我对应用程序的哪些部分应该可以访问搜索类感到有些困惑;目前我的模型使用静态工厂来构建搜索类,当需要通过它的ID检索实体时。我的模型是否应该调用我的服务层来进行此调用,从而无需使用我的工厂类来返回搜索者?
我想我不喜欢可以从我的应用程序的多个部分访问我的数据库的想法,而实际上我宁愿首先通过我的服务层。
非常感谢提示和反馈!
答案 0 :(得分:1)
我最终会创建一个SearchService
(实现一个接口,即ISearchService)类,该模型或任何其他想要访问Searcher
的代码将与之交互。
通过这种方式,您可以与Searcher
类或工厂保持清晰的分离,这可能在将来发生变化。另一个好处是,通过在SearchService
中包含所有与搜索相关的代码,开发人员更容易理解代码,因为他们知道搜索相关代码在SearchService
中,而不是然后点缀在代码库周围,调用工厂方法等。
此外,通过使用ISearchService,您可以自己选择使用依赖注入,这是一种为您初始化对象的好方法,而不必担心实现更改。
这只是我的偏好,而不是这是一种正确/错误的做事方式。