ZergMaster, а я и не утверждал, что ECS отменяет наследование. Хотя, в данном конкретном случае можно организовать все так:
класс Character - это узел;
классы CharacterNPC и CharacterPlayer его наследники, но их различия всего в одной строке (ссылке на частные компоненты);
классы NPC и Player - компоненты, не имеющие общих корней и описывающие все те данные, что присущи лишь одной из сущностей.
Код AS3:
class Character extends Node {
var commonComponent_1;
var commonComponent_2;
...
var commonComponent_N;
}
class CharacterPlayer extends Character {
var player:Player;
}
class CharacterNPC extends Character {
var npc:NPC;
}
Т.е. наследование есть, но оно номинально.
Добавлено через 56 минут
Вообще, я сейчас прочитал все то, что написал и понял, что не совсем верно изложил свои мысли. Вся эта писанина относится не к выбору между наследованием и композицией(ECS), а именно к затронутой автором проблеме раздутого класса и способах её решения. Тут были предложены варианты решения через цепочку наследования. Я же предложил решение через композицию. Но, естественно, говоря "композиция", я имею в виду "композиция и наследование". Как мне кажется, если решать "проблему раздутого класса" чисто с помощью цепочки наследования, то мы получим некое разросшееся дерево, с высокой глубиной и при этом один корень будет иметь 2-3 класса. А если решать через ECS, то у нас будет несколько маленьких деревьев с одним корнем и одним поколением наследников. Разросшееся дерево в этом случае может получиться только у цепочки узлов, но это настолько маленькие классы, что запутаться в таком дереве будет очень сложно.