Хорошо, вопрос структуры кода:
Скажем, у меня есть класс FruitManager
, который периодически получает Fruit
объекты из некоторого источника данных. У меня также есть некоторые другие классы, которые необходимо получать, когда эти объекты Fruit
будут получены. Тем не менее, каждый класс интересуется только некоторыми видами фруктов, и каждый плод имеет другую логику того, как его следует обрабатывать. Скажем, например, класс CitrusLogic
имеет методы OnFruitReceived(Orange o)
и OnFruitReceived(Lemon l)
, которые следует вызывать, когда получен соответствующий подтип плода, но его не нужно уведомлять о других плодах.
Есть ли способ элегантно справиться с этим в С# (предположительно с событиями или делегатами)? Очевидно, я мог бы просто добавить общие OnFruitReceived(Fruit f)
обработчики событий и использовать инструкции if для фильтрации нежелательных подклассов, но это кажется неэлегантным. Кто-нибудь имеет лучшую идею? Спасибо!
Изменить. Я нашел общих делегатов, и похоже, что они могут быть хорошим решением. Это звучит как хорошее направление?