簡體   English   中英

合適的數據處理設計模式?

[英]Appropriate data processing design pattern?

我正在尋找合適的設計模式來完成以下任務:

我想從一些“ComplexDataObject”(例如圖像)中提取一些信息,並以更合適的格式保存相關信息,我們稱之為 NiceDataObject。

分幾個步驟從 ComplexDataObject 中提取部分信息。 一個步驟的輸出可能需要作為后續步驟的輸入。 由於輸出和輸入可能是不同的類型,我不知道我是否可以使用一些現有的模式,如“管道和過濾器”、“責任鏈”等?

下面的一段“代碼”希望能清楚地說明我想要實現的目標

NiceDataObject ProcessingMethod1(ComplexDataObject cdo) {
    InfoType1 infoPiece1 = extractInfoMethod1(cdo)
    InfoType2 infoPiece2 = extractInfoMethod2(cdo, infoPiece1)
    InfoType3 infoPiece3 = extractInfoMethod3(cdo, infoPiece2)
    InfoType4 infoPiece4 = extractInfoMethod4(cdo, infoPiece2, infoPiece3)
    NiceDataObject structuredInfo = PutItTogether(cdo, infoPiece1, infoPiece2,
                                                  infoPiece3, infoPiece4)
    return structuredInfo
}

為了讓事情變得更復雜,理想情況下,我還能夠以相同的方式處理另一種復雜的數據類型(例如 AnotherComplexDataObject)以生成所需的 NiceDataObject。

NiceDataObject ProcessingMethod2(AnotherComplexDataObject cdo) {
    InfoType1 infoPiece1 = extractInfoMethod1(cdo)
    InfoType5 infoPiece5 = extractInfoMethod5(cdo, infoPiece1)
    InfoType6 infoPiece6 = extractInfoMethod6(cdo, infoPiece5)
    NiceDataObject structuredInfo = PutItTogether2(cdo, infoPiece1, infoPiece6)
    return structuredInfo
}

這將允許我編寫一個通用的 API 函數,例如

NiceDataObject Process(SomeComplexDataObject cdo)

其中 SomeComplexDataObject 是 ComplexDataObject 和 AnotherComplexDataObject 的基類。

如果可能,我想“注冊”處理步驟方法(即上面的 extractInfoMethod1、...、extractInfoMethod6)以獲得靈活性,因為我希望能夠查看中間數據。

如果重要的話,我正在使用 Python,並且在上面使用類似 C 的“代碼”只是為了說明輸入和輸出通常是不同的類型。

不僅僅是模式,你需要一個可靠的 CPU\\RAM 優化來做到這一點。 否則對於龐大的圖像處理,您將耗盡資源。

您可以使用以下設計模式作為基礎。 https://www.codeproject.com/Articles/5272366/A-data-processing-design-pattern-for-intermittent

創建數據處理器來轉換、轉換或提取,然后您可以實施責任鏈以添加各個階段。 現在每個數據處理器都是多線程的,因此您可以利用時間間隔。 即當前處理器可以在前任處理器共享下一批之前完成其任務。

暫無
暫無

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

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