gpt4 book ai didi

c++ - 将单例类转换为一种上下文

转载 作者:太空狗 更新时间:2023-10-29 22:53:05 24 4
gpt4 key购买 nike

我一直在摸索着思考删除我一开始愚蠢地添加的单例的最佳方法。作为背景,此应用程序是一个股票投资组合跟踪器。我目前有三个类,我认为它们是唯一的实例:

  1. 价格(一个包含列表的类历史价格、股息、 split )
  2. 作品集(一类管理 一些投资组合对象的集合 有用的包装函数)
  3. 查询(一个 读取和写入的类 数据库)

为了满足用户的要求,我添加了从多个数据库打开和保存的功能。每个数据库(查询类)理论上都会被传递到投资组合和价格的构造函数中以加载数据。

我面临的问题是所有 3 个类都是相互关联的。如果我打开 C:\database1.sqlite,我应该无法混合和匹配 C:\database2.sqlite 中的价格和投资组合。此外,任何编辑都必须保存到适当的数据库中。

我最初的想法是创建一个包含这些类的上下文对象并将其传递。然而,读书Can you explain the Context design pattern? ,我认为这不是正确的解决方案。

如何删除单例,但仍保持对象之间的完整性?谢谢。

最佳答案

我会考虑从“复数”到“单数”你会做出哪些改变。如果您的对象是一个事物而不是一些事物,那么对您的系统进行推理会容易得多。

例如

class Price;
class Portfolio;
class Query;

如有必要,您可以随时添加:

typedef std::vector<Price> Prices;
typedef std::vector<Portfolio> Portfolios;
typedef std::vector<Query> Queries;

但我的拙见是,您可能应该计算出这些事物的单个实例之间所需的交互,然后在具有一对多关联时转到所需的交互(即这些类​​的一个实例可以引用另一个的多个实例?),然后显式定义它们。

基本上,努力使交互的推理变得简单。您可能有多个价格和投资组合,但很难记住在一个实例上起作用的操作与在多个实例上起作用的操作,因此拆分这些差异并使事物的实例简单明了。

关于c++ - 将单例类转换为一种上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3097854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com