这是否有任何代码气味或违反了SOLID原则?
public string Summarize()
{
IList<IDisplayable> displayableItems = getAllDisplayableItems();
StringBuilder summary = new StringBuilder();
foreach(IDisplayable item in displayableItems)
{
if(item is Human)
summary.Append("The person is " + item.GetInfo());
else if(item is Animal)
summary.Append("The animal is " + item.GetInfo());
else if(item is Building)
summary.Append("The building is " + item.GetInfo());
else if(item is Machine)
summary.Append("The machine is " + item.GetInfo());
}
return summary.ToString();
}
从代码中可以看出,我的Summarize()方法与实现类(如Human、Animal等)紧密耦合。
这段代码是否违反了LSP原则?(还有其他SOLID原则吗?)