我學習設計Patters和我有哪裏我不知道這將是一個更好的做法的情況:工廠模式或擴展方法?
我有一個類「類別」其中有幾個字段:姓名,2種網址,相關名單對象。有一種方法'toHtml()',它基本上從該類的實例中生成一些HTML。
有4種不同類型的「類別」具有完全相同的字段,但'toHtml()'方法應該給每個類別提供不同的結果。
我不確定是否應該傳遞一個參數「type」和一系列ifs/switch語句來生成不同的html,或者我應該創建一個Category類的抽象類並創建幾個覆蓋toHtml()方法的子類,那麼使用CategoryFactory類來生成它們?在這兩種情況下,我需要傳遞'type'參數。
我試着考慮'關閉修改,打開擴展'OOP規則。但在這種情況下,如果我想添加'第五'類別類型,這會生成不同的html - 對於第一個解決方案,我只需要修改toHtml方法(如果再添加一個),則需要創建附加的子類AND修改CategoryFactory類。
什麼會更好的做法?當我有類似的困境時,我是否應該遵循任何額外的規則?
我會使類別類抽象,擴展它爲每個類型,並讓你的每個類型自己toHTML()。我建議不要在抽象類中創建一個默認的toHTML(),並強制類實現它們自己的類。 –
非常感謝你@RAZ_Muh_Taz的建議! – x1r15