Understanding component-based architecture
Component-based architecture, also known as component-based design and modular programming, is an approach to software design that aims to break down behavior into succinct, reusable components. We already do this to a certain extent with object-orientated design, but component-based architecture takes this further. For example, if an object such as a sprite or a 3D model needs a certain behavior, it will be defined through a component that the object will own, as opposed to being inherited from a base
class.
Problems with a traditional inheritance-based approach
Before we get into the pros and cons of a component-based approach, let's look at the problems that a traditional inheritance-based approach brings. It's these problems that we'll aim to fix.
Convoluted inheritance structures
Let's suppose that we have a simple player
object that requires a 3D model and to be effected by our game physics. Let's look at an inheritance structure that may be needed...