Я только что использовал его впервые - рассмотрим:
IGameObject
void Update()
IDrawableGameObject : IGameObject
void Draw()
У меня был класс уровня, который использовал DrawableGameObjects - вместо этого я переключил его на IDrawableGameObject, чтобы уменьшить сцепление и помощь в TDD.
Однако я, конечно, теряю способность вызывать Update (..) без приведения - чтобы обойти это, я использовал наследование. Я никогда раньше не использовал наследование на основе интерфейса - и я действительно не нашел в этом необходимости, кроме как в этом случае.
Я действительно не хотел каждый раз приводить в своем методе обновления, так как он вызывается до 60 раз в секунду, с другой стороны, мог бы сработать foreach (..), который использовал бы IGameObject.
Любой совет?
Редактировать
Я должен добавить - мою фальшивку, которую я создал впоследствии для модульного тестирования, а затем реализовать IDrawableGameObject - в этих классах теперь есть много методов, а не просто кучка для каждого интерфейса. Я знаю, что интерфейсы должны быть только небольшим числом членов, но наследование нарушает это правило?
Спасибо