" означает совершенно разные вещи в разных языках ...
Интересно, что термин "
функтор" означает совершенно разные вещи в разных языках программирования. Возьмем, например,
C++. Каждый, кто освоил мастерство C++, знает, что класс, который реализует
operator(), называется функтором. Теперь возьмём
Standard ML. В ML функторы отображают структуры на структуры. Теперь
Haskell. В Haskell функторы — это просто гомоморфизм над категориями. А в
Prolog функтор означает атом в начале структуры. Все они различаются. Давайте подробнее рассмотрим каждый из них.
Читать дальше →
... , которую он назвал
Manager (возможно для ...
При создании игр разработчики часто сталкиваются с такой задачей — какое событие должно быть выполнено, но не в данный момент, а спустя какое-то время. Решается эта задача по разному. Чаще всего у игровых объектов присутствует собственный внутренний таймер, и нужную задержку можно реализовать с его помощью (добавив лишний код объекту). Но иногда нужно сделать отложенный вызов метода у объекта, не имеющего собственного таймера, скажем скрыть окно, строку, показать иконку или эффектик спустя некоторое время, сделать что-то ещё, но не прямо сейчас, а с задержкой. Однократно или несколько раз.
Вот для таких и подобных целей моим коллегой была разработана универсальная система, которую он назвал Functor Manager (возможно для названия подобных систем есть устоявшийся другой термин, я не знаю, буду рад если подскажут).
Изначально код был написан на C++, и использовался в наших прошлых проектах, сейчас у нас проект на C#, поэтому реализацию приведу на C#. Краткая концепция и код реализации (C#) под катом.
Читать дальше →