A abordagem de "agregação pura" descrita por West nesse artigo vinculado evita completamente um objeto "entidade". Existem componentes flutuando na memória, mas eles são unidos apenas por relacionamentos implícitos, se é que existem.
Uma maneira de fazer isso é a chamada abordagem externa . Nesse sistema, os componentes são mantidos por sistemas que os gerenciam ou, de outra forma, os controlam (eu uso o termo "gerenciar" aqui, mas você não deve considerar que isso significa que estou sugerindo que você tenha várias classes * Manager para realizar tipos de componentes). Por exemplo, seu sistema de física pode se apegar a várias coisas que representam cada corpo rígido em seu mundo de simulação e pode expor essas coisas como Componentes Físicos. Os componentes podem ser os objetos reais manipulados pelo subsistema em questão ou podem ser proxies para esses objetos, conforme necessário.
Nesse sistema, não há necessariamente a necessidade de uma classe "Entity" manter uma coleção de referências aos componentes que a compõem; em vez disso, é emitida uma notificação sobre a criação ou destruição de uma "entidade" e cada subsistema que manipula componentes analisa a descrição da entidade criada / destruída (que normalmente é carregada de alguns dados) e determina se um componente é necessário para ela.
Uma das vantagens dessa abordagem é que você obtém uma boa localidade de referência para cada componente. Infelizmente, é um pouco estranho, no geral, e não é o sabor mais amigável das entidades baseadas em componentes que encontrei. Às vezes, é realmente conveniente ter um objeto real que represente uma entidade, mesmo que esse objeto faça pouco mais do que agregar referências fracas a componentes que ainda são mantidos por outros subsistemas (se nada mais, ele fornece uma maneira fácil de rotear mensagens entre componentes) .
Existem várias maneiras de implementar sistemas de objetos de jogo orientados a componentes; -lo realmente, realmente, realmente ajuda se você tem uma idéia sólida dos requisitos que você quer fora de seu sistema - você pode olhar para o que os quadros populares como Unidade fazer por exemplos. Sem definir requisitos rigorosos para você, você pode se deparar com o problema de "projetar" infinitamente o sistema sem realmente construí-lo, tentando em vão encontrar a implementação perfeita. Por alguma razão, eu já vi isso muito com sistemas de componentes.