【发布时间】:2011-03-07 02:04:23
【问题描述】:
一段时间以来,我一直在摸索如何删除我一开始愚蠢地添加的单例的最佳方法。作为背景,这个应用程序是一个股票投资组合跟踪器。我目前有三个班级,我认为这是唯一的例子:
- 价格(一个类包含一个列表 历史价格、股息、 分裂)
- 投资组合(一个类管理 一组投资组合对象,其中一些 有用的包装函数)
- 查询(一个 读取和写入的类 数据库)
为了满足用户的要求,我添加了从多个数据库打开和保存的功能。每个数据库(查询类)理论上都会被传递到投资组合和价格的构造函数中以加载数据。
我面临的问题是所有 3 个类都是相互关联的。如果我打开 C:\database1.sqlite,我应该无法混合和匹配 C:\database2.sqlite 中的价格和投资组合。此外,任何编辑都必须保存到适当的数据库中。
我最初的想法是创建一个由这些类组成的上下文对象并传递它。但是,阅读Can you explain the Context design pattern?,我认为这不是正确的解决方案。
如何删除单例,但仍保持对象之间的完整性?谢谢。
【问题讨论】:
-
如果您的查询层与您的价格或投资组合类有任何连接,则您的设计存在严重错误。我知道可能为时已晚,但无论使用单例模式如何,您的设计似乎都有一个非常根本的缺陷。
-
无论这个“上下文模式”认为是什么,您引用的问题的链接都已失效,并且该模式还不够流行,无法出现在谷歌搜索中。一旦你解决了奇怪的相互依赖关系,只需在高层次上实例化对象,并将引用传递给需要它们的任何对象。
-
Serapth,查询层不知道价格或投资组合类,但价格和投资组合类使用它来加载并保存到数据库。