我想用多态性代替下面的递归函数中的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