我正在使用策略模式來解析不同格式的文件。策略模式的變化
每個策略都會返回一個從文件中解析出來的字符串列表。現在已經引入了一項要求來從一種文件類型中返回更多數據,因此需要對其中一種策略進行更新。有沒有一種常見的做法來實現這一點?我可以將額外的數據存儲在未來,但我認爲這是矯枉過正?
我正在使用策略模式來解析不同格式的文件。策略模式的變化
每個策略都會返回一個從文件中解析出來的字符串列表。現在已經引入了一項要求來從一種文件類型中返回更多數據,因此需要對其中一種策略進行更新。有沒有一種常見的做法來實現這一點?我可以將額外的數據存儲在未來,但我認爲這是矯枉過正?
我想出的一個可能的解決方案是返回存儲額外參數的自定義對象類型列表。
您可以創建一個從基本策略接口繼承的新接口,公開您需要的新數據。然後,您對具體文件的具體策略實現將實現擴展接口。
當爲任何給定文件選擇並執行具體策略類時,可以檢查它是否實現擴展接口,如果是,則相應地處理額外的數據。
這樣做的好處在於,您可以在擴展接口中實際編寫數據協定,而不必使用自由格式的額外參數列表。另外,如果需要,該界面可以在其他策略中重用。
缺點是,如果很多其他策略可能偏離常規策略,那麼最終可能會有一個大的界面結構。