我有SaveManager抽象類和我的具體類TVSaveManager,DataSaveManager和VoiceSaveManager實現SaveManager抽象類。實現策略模式,當我們有不同的回報類型
List<SaveManager> lstPrdSaveManager;
public SaveResponseModel SaveProducts(SaveProductsRequest objSaveProductsRequest)
{
SaveResponseModel saveResponseModel = new SaveResponseModel();
lstPrdSaveManager = SaveManagerFactory.GetSaveManagers(objSaveProductsRequest, saveResponseModel);
lstPrdSaveManager.ForEach(saveManager =>
{
saveResponseModel = saveManager.MapAndSaveProduct();
});
return saveResponseModel;
}
工廠類將決定創建哪個管理器並向我們發送列表。我將遍歷列表並調用每個具體類將遵守的通用接口「MapAndSaveProduct」。我想更多或者像一個戰略模式。
但是,所有具體的savemanage的MapAndSaveProduct方法的返回類型是不同的。用於TvSaveManager的TVResponse和用於DataSaveManager的DataResponse等。所以我創建了SaveResponseModel類來保存所有的返回類型(我將SaveResponseModel傳遞給工廠,這樣它就會傳遞給所有具體的savemanager類的構造函數,單獨的類將設置所需的屬性,如TvSaveManager - > saveResponseModel.TvResponse)。我得到期望的結果,代碼看起來很乾淨。
問題是, 1)當我們有不同類型時,使用這種模式是否正確? 2)如果具體類別有不同類型,我們不應該使用策略模式嗎? 3)在這種情況下,我應該採用不同的設計模式嗎?如果是的,哪一個?
你想達到什麼目的?你正在試圖用你的設計解決什麼問題? –
我沒有得到*「具體savemanage的返回類型是不同的」*。 'SaveManager'是一個類的權利?但是返回類型與Method關聯。 – Mohayemin
是mohayemin。其MapAndSaveProduct返回類型不同 –