这是否给代码带来了异味或违反了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?(还有其他可靠的原则吗?)
发布于 2010-09-03 23:50:54
这样如何:
summary.Append("The " + item.getType() + " is " + item.GetInfo()); https://stackoverflow.com/questions/3637377
复制相似问题