【发布时间】:2015-06-28 16:22:09
【问题描述】:
目前,我的应用架构流程如下:
View → Presenter → Some asynchronous executor → DAOFactory → DAO (interface) → DAO (Impl)
目前,这种架构是可行的;主要是因为我目前只需要一种 DAO。但随着需求的增长,我需要扩展到多个 DAO,每个 DAO 都有自己的关于如何获取数据的实现。
这是我的例子:
主要的麻烦来自FooCloudDao,它从 API 加载数据。此 API 需要某种身份验证方法 - 在登录期间存储的字符串令牌(例如,Session 对象 - 是的,这也有自己的 DAO)。
通过FooDaoFactory 传递一个Session 实例是很有诱惑力的,以防万一没有连接,但它看起来很老套且违反直觉。我可以想象的下一件事是从FooDaoFactory 中访问SessionDAOFactory 以获得Session 的实例(然后在我需要FooCloudDAO 实例时传递它)。
但正如我所说,我不确定我是否可以做这样的事情 - 好吧,也许我可以,但真的是这样正确的做法?
【问题讨论】:
-
我真的很喜欢你解释问题的方式。话虽如此,您的问题是道德吗?这似乎不在 Stack Overflow 的范围内,因为它使问题变得基于意见。
-
好吧,我可以换个说法——这样做是否正确?如果这也被认为是基于意见的,那我就卡住了。话又说回来,任何答案都必须包含作者的一些观点。
-
也许这更适合programmmers.stackexchange.com?
-
如果大多数人认为有必要,我不介意将问题转移到programmers.se。但是,在 SO 中提出并回答了很多与此类似的问题。 stackoverflow.com/questions/2285005/… 和 stackoverflow.com/questions/13239354/…,仅举几例。
-
作为 Programmers.SE 用户,这对我们的网站来说似乎是一个很好的问题,所以如果这里的任何高级用户觉得它对 SO 来说是题外话,那么请继续投票支持迁移。或者随便在这里回答,都可以。
标签: java oop design-patterns architecture