这是否会给出任何代码异味或违反SOLID原则?此方法是否违反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();
}
正如你看到的,我的汇总()绑定到实现类,如人类,动物等
是否闻到?我是否违反LSP?任何其他固体原则?
感谢您的回复,但我不完全了解技术性,所以您能否给我举个例子呢? :)再次感谢,这可能正是我需要的。我只需要看看它的一个例子。 – 2010-09-03 18:28:11
嗯......你接受这个事实是否意味着你不需要一个例子?我很乐意尝试提供,但我不确定哪个部分会导致您感到困惑。如果你可以更具体,我会试试看。 – rmeador 2010-09-03 18:53:52
我接受它作为答案,因为它回答了我的具体问题。我正在研究基于此的解决方案。我只需要一个例子来确保我理解技术性。贾斯汀的回答非常详尽和有帮助,所以类似的东西会非常棒。 – 2010-09-03 18:57:54