Прежде всего, я прошу прощения за "еще один вопрос интерфейса". Я подумал, что об этом, возможно, стоит спросить, поскольку это своего рода странная проблема. Проект, который я использую, использует Actionscript 3, но это скорее общий вопрос ООП.
Вот ситуация:
У меня есть класс, который уже наследуется от базового класса; это объект в видеоигре. (Допустим, это космический корабль.) В моей игре мне бы хотелось, чтобы на экране было много разных космических кораблей одновременно, поэтому я решил создать пул объектов, используя структуру связанного списка.
Логически, поскольку класс Spaceship уже наследуется от базового класса, я бы использовал интерфейс для определения методов, относящихся к связанному списку. Это, кроме того, позволило бы мне распространить эти методы на другие классы - например, класс Asteroid, или класс Bullet, или класс Particle.
Вот в чем проблема - сила интерфейса в том, что он позволяет вам переопределить реализацию для каждого класса, который вы используете, в зависимости от того, что вам нужно. Для чего-то вроде связанного списка, однако, код не будет меняться между классами. Поскольку я планирую иметь много классов, которые будут реализовывать эти методы объектного пула, я действительно хотел бы избегать повторного использования одного и того же кода реализации в каждом новом классе.
Вопрос: Есть ли способ избежать повторного использования одного и того же точного кода связанного списка для каждого класса, который я использую? Или это просто неизбежность? Кажется, что это нарушает принцип «Один раз и только один раз». Можно ли определить полную функцию внутри блока наследования, а не только его прототип?
Если это глупый вопрос, дайте мне знать. (Если я спрашиваю, так ли это, возможно, это так, но эй, не могу учиться, не будучи глупым время от времени.) Просто кажется, что должен быть более логичный способ сделать что-то подобное.