簡體   English   中英

將單例類轉換為一種上下文

[英]Converting singleton classes to a type of context

我一直在摸不着頭腦,想着最好的方法來刪除我首先愚蠢地添加的單身人士。 對於背景,此應用程序是股票投資組合跟蹤器。 我目前有三個類,我認為這是唯一的實例:

  1. 價格(包含歷史價格,股息,拆分列表的類別)
  2. 投資組合(管理具有一些有用的包裝函數的投資組合對象集合的類)
  3. 查詢(讀寫數據庫的類)

為了滿足用戶請求,我添加了從多個數據庫打開和保存的功能。 理論上,每個數據庫(Queries類)都會被傳遞到一個Portfolios and Price'構造函數來加載數據。

我面臨的問題是所有3個類都是相互關聯的。 如果我打開C:\\ database1.sqlite,我應該無法混合和匹配C:\\ database2.sqlite中的價格和投資組合。 此外,任何編輯都必須保存到正確的數據庫。

我最初的想法是創建一個由這些類組成的上下文對象並傳遞它。 但是,閱讀你能解釋一下Context設計模式嗎? ,我不認為這是正確的解決方案。

如何刪除單例,但仍保持對象之間的完整性? 謝謝。

我會考慮你從“復數”轉變為“單數”會有什么變化。 如果你的對象是一個東西而不是一些東西,那么推理你的系統會容易得多。

例如

class Price;
class Portfolio;
class Query;

如有必要,您可以隨時添加:

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

但我的拙見是你應該在這些事情的單個實例之間找出你想要的交互,然后在你有一對多關聯時轉到你想要的交互(即這些類​​的一個實例可以引用多個另一個?)的實例,然后明確定義。

基本上,努力使關於交互的推理變得簡單。 您可能有許多價格和投資組合,但要記住在一個實例上運行的操作與在多個實例上運行的操作之間要記住這一點太難了,因此將這些差異分開並保持事物的實例簡單明了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM