我想用多態性代替下面的遞歸函數中的if語句。用多態性代替條件如何
我很多讀到它,看到幾個YouTube視頻,但仍然不能看到的實際上做它在我的代碼(這是簡化了這篇文章的目的)
什麼使得這一任務更加困難的路我是一個foreach statment的在函數的開頭存在和遞歸調用
感謝您的幫助
public void FlattenXml(XElement xml, string id = null)
{
var elements = xml.Elements().ToList();
foreach (var element in elements)
{
if (element.Name == "name1")
{
Func1();
}
if (element.Name == "name2")
{
Func2();
}
if (element.Name == "name3")
{
DoSomethingElse();
FlattenXml(content, tempId);
Func3();
}
else
{
DoSomethingCompletelyDifferent();
FlattenXml(element, id);
}
}
xml.Elements("name3").Remove();
}
你能澄清你的意思嗎?用「多態性」來代替? – Evk
https://refactoring.guru/replace-conditional-with-polymorphism – Limbo
這個重構在這裏並不適合。如果你真的想要,你可以創建一堆類,但是在這種情況下它不會改進代碼。 – Evk