예를들어 플레이어가 갖는 특징으로 점프, 이동, 스킬, 인벤토리 등등
수많은 특징들이 있을때 하나의 클래스에 모든 기능들을 넣어 준다면
나중에 요구사항이 변경 되었을때 어느 하나 수정하다 다른쪽에서 오류가 날 수 있는 가능성이 높다
이러한 것을 커플링이 높은 코드라고 하는데 이러한 커플링이 높으면
유지보수하기가 되게 어려워진다
이러한 커플링이 높은 코드를 해결하기 위해 고안된 패턴 중 하나가 컴포넌트 패턴이다
그럼 위의 예에서 컴포넌트 패턴을 적용해보면
하나의 플레이어는 여러 기능을 갖게 된다
즉 여러 기능들을 각각 하나의 컴포넌트로 분리를 시키면
점프의 기능만을 담당하는 컴포넌트,
이동 기능만을 담당하는 컴포넌트,
스킬 기능만을 담당하는 컴포넌트,
인벤토리만 담당하는 컴포넌트
이렇게 보면 트리 구조와 상당히 비슷하다
그리고 점프 안에서도 어떤 점프 방식이냐에 따라서 또 여러 갈래(컴포넌트)로 쪼개질 것이다.
이동, 스킬, 인벤토리도 마찬가지
이런식으로 하나의 플레이어를 만들기 위해 독립된 기능들을 하나하나 붙이기 때문에
어떤 하나의 기능에 오류가 생기면 해당 기능에만 수정을 가하면 된다 그리고 여러 플레이어를 만들게 되는 상황에서도 미리 만들어 놨던 기능들을 하나하나 붙이기만 하면 되기때문에
코드 재사용적인 측면에서도 좋다.