我在应用程序结构中有几个关于“最佳实践”的问题。我利用了瘦身模式,并且拥有完成大部分(全部)数据库交互的服务层。模型在需要数据库事务时调用服务层。模型应该能够访问我的搜索者类吗?
我也有一个工厂类可以返回的形式,模型和服务层的类。这个工厂类也可以返回一个“搜索”类,它充当了一个非常简单的DBAL,并被我的服务层使用。
该搜索类有辅助方法如GETALL()和getById()。
我稍微混淆有关的我的应用程序的部分应该有机会获得搜索类;目前我的模型使用静态工厂来构建搜索类,当它需要通过它的ID检索实体时。我的模型是否应该调用我的服务层来进行此调用,从而否定使用我的工厂类返回搜索者的需求?
我想我不喜欢我的数据库可能会从我的应用程序的多个部分,当我真的宁愿一切都需要经过我的服务层首先访问的想法。
提示和反馈非常感谢!
我喜欢这个解决方案。在我的应用程序中,我可以看到这种差异的唯一方法是每个服务层至少使用基本的搜索器类,因为它是DBAL。我想我可以利用搜索服务作为getAll和getById的单一入口点? – James
是的,你可以做到这一点。 ISearchService将具有可能与Searcher相同的方法。但是因为你将Searcher包装在一个服务类中,所以你有一个很好的抽象,所以在服务中你可以做任何你想做的事情,包括让Searcher调用。例如,这个“任何事情”可能是审计,记录下谁搜索了搜索条件,搜索条件是什么。 –