簡體   English   中英

我應該在一個類中有兩個不同的變量來代表幾乎同一件事嗎

[英]Should I have two different variables in one class that represent almost the same thing

最初,我有一個類A,它使用列表B作為構造函數參數。 此列表B保留在A類的變量中。 使用該類A的另一個類需要列表B中的數據,但方式不同。 因此,我創建了一個特定的對象C,並在類A中使用了getSomething()方法,該方法根據原始列表B中的信息即時創建了這些對象C之一。

事實證明,調用getSomething()的類需要一些原始列表B不包含的額外信息。 但是,對列表B中的特定元素進行少量計算即可得到該信息。 該信息需要添加到對象C中。此計算有點繁瑣,因此當我在getSomething()中創建對象C時,我不想立即進行處理。 這給我帶來了一個問題,因為我無法使用此計算出的信息來更新對象C的任何元素,因為對象C的元素尚不存在,所以它們是在getSomething()中創建的。

我應該如何解決這個最佳方法。 可能有任何模式嗎?

  • 我是否在類A的構造函數中將列表B中的元素轉換為對象C的列表,然后丟棄列表B,然后執行計算並更新對象C的所有元素?

  • 我是否同時保留了原始列表B和對象C的列表,並且具有兩個具有幾乎相同信息的變量,只是以不同的方式顯示它們?

  • 或者是其他東西?

編輯:C不是列表B中元素的擴展,它比列表B中的一個或多個元素更多地組合到C。

如果您可以對列表B進行調整以創建列表C而又不會丟失類A所需的信息(換句話說,如果類A僅使用列表C就可以正常工作),那么可以,在構造函數中進行計算而不保留B看起來像是好主意。

但是,如果您還需要原始數據,則A類可以保留兩者。 如果您知道列表B和列表C中的哪些信息相同,則可以為列表C的實例提供對列表B的引用,這樣它只需存儲不同的信息,即可在列表B中引用該信息。要求未更改的列表B。

這種解釋可能比實際問題更令人困惑。

AFAICT您需要修飾的B,其中修飾的列表是在A的構造函數中計算的。

它是B對象的副本,還是對原件(或其他東西)的復合引用,取決於您的實際需求。

暫無
暫無

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

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