Архифлеймер
Зарегистрирован: 04 October 2005
Сообщения: 3067
Примеры кода: 0
|
Re: [dev] octalforty Waffle -- форум |
21 February 2008 15:16 |
|
|
|
|
Это как-то не совсем иерархии, но идею я, кажется понял.
Смысл этих интерфейсов в том, чтобы позволить прикладному коду работать с объектами полиморфно. То есть, если у нас есть метод
RssFeedItem BuildRssFeedItem(IBusinessObject businessObject)
{
RssFeedItem rssFeedItem = new RssFeedItem();
if(businessObject is IBusinessObjectWithName)
rssFeedItem.Title = ((IBusinessObjectWithName)businessObject).Name;
if(businessObject is IBusinessObjectWithDesciption)
rssFeedItem.Content = ((IBusinessObjectWithDesciption)businessObject).Description;
return rssFeedItem;
}
то ему совершенно неинтересно, что конкретно ему передают -- главное, чтобы переданный объект реализовывал IBusinessObject и, опционально, пару других интерфейсов. Таким образом получаем, что этот метод умеет обрабатывать и (если говорить про этот форум) Discussion, и DiscussionPost, и даже Forum.
Может это конечно холивар но:
такой IF - это не есть гуд.
И к тому же его можно избежать:
RssFeedItem BuildRssFeedItem(IBusinessObject businessObject)
{
RssFeedItem rssFeedItem = new RssFeedItem();
rssFeedItem.Title = businessObject.Name;
rssFeedItem.Content = businessObject.Description;
return rssFeedItem;
}
Ведь если объект не содержит Description от он и вернет NULL
Зачем такой огород с if и as непонятно
----------------------------------------
Knowledge is P...O...w...E...R!
My site
Данное сообщение получено с сайта GotDotNet.RU
|
|