Архитектура на основе компонентов с использованием методов интерфейса по умолчанию

#oop #design-patterns #c#-8.0

#ооп #шаблоны проектирования #c#-8.0

Вопрос:

Можно ли считать наилучшей практикой использование методов интерфейса по умолчанию (как у нас в C # 8) наряду с архитектурой на основе компонентов?

Например, предположим, что мы определяем:

 interface Walkable
{
   int PositionX {get; set;}
   int PositionY {get; set;}

   void Move(Direction d)
   {
      // some logic
   }
}

class Player : Walkable
{
  // ...
}
  

Мы можем легко добавить функциональность ходьбы к большему количеству игровых объектов (например, NPC) без дублирования кода, с одной стороны, и добавить больше поведенческих компонентов для игрока (например, атакуемых), с другой стороны.

Комментарии:

1. итак, чтобы почувствовать это, просто используйте для этого систему ECS — unity! Есть игровой объект. Добавьте поведение. («может ходить», «взрывается при попадании», «танцует» и т. Д.)

2. @Fattie Я думаю, что реальный вопрос здесь заключается в том, уместна ли здесь функция «методы интерфейса по умолчанию». На мой взгляд, нет, потому что каждый компонент должен инкапсулировать sate (например, для таймера), который интерфейс не поддерживает.

3. это звучит очень разумно, @barak1412