Принципы объектно-ориентированного программирования

         

Интерфейсы



Интерфейсы

Теперь вы видите, насколько сложна проблема. Если детерминированный объект реализует интерфейсы, то подсчитываются ли ссылки, типизированные как интерфейсные ссылки? Если да, то для всех реализующих интерфейсы объектов производится подсчет ссылок (заметьте, что System.Int32 реализует интерфейсы). Если нет, объект опять же теряет детерминированность. Если же ответ — "ошибка", детерминированный объект не может реализовывать интерфейсы. А если ответ звучит так: "это зависит от того, помечен ли интерфейс как детерминированный", то возникает еще одна проблема бифуркации. Интерфейсы не предназначены для определения времени жизни. Что, если кто-то реализует API, принимающий интерфейс ICollection и реализующий его ваш объект должен быть детерминированным, а сам интерфейс не был определен таким образом? При этом вам сильно не повезет. Согласно этому сценарию, будет нужно определить два интерфейса — детерминированный и недетерминированный, где каждый метод будет определен дважды (в каждом из интерфейсов). Вы не поверите, но рассматривалась даже идея создания средств автоматической генерации двух версий методов. Так, мысль погрязла в огромной сложности проблемы, и эта идея была отброшена.



Содержание раздела