這是否會給出任何代碼異味或違反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