김선영
한세대학교 22학번 컴퓨터공학과
한세대학교 22학번 컴퓨터공학과
개발을 시작할 때 가장 막막한 것 중 하나는 수많은 용어들입니다. 특히 핸들러, 컨트롤러, 매니저처럼 비슷해 보이는 이름들이 많죠. 이 글에서는 이 용어들의 이름에 숨겨진 의미와 역할의 차이를 명쾌하게 정리하여, 개념을 쉽고 빠르게 잡아드리겠습니다!
| 키워드 | 핸들 (Handle) = 처리하다 |
|---|---|
| 역할 | 특정 이벤트나 요청이 발생했을 때, 이를 받아 즉각적으로 처리하는 로직을 담고 있습니다. |
| 게임 예시 | InputHandler: 플레이어가 키를 누르는 이벤트를 감지해 캐릭터 컨트롤러에 전달합니다. |
| 핵심 | 일이 터졌을 때, 수습하고 다음 단계로 넘기는 실무 담당자. |
| 키워드 | 콜 백 (Call Back) = 다시 불러주다 |
|---|---|
| 역할 | 어떤 함수를 실행하면서, 작업이 완료된 후에 실행해 달라고 다른 함수에게 전달하는 함수입니다. 주로 비동기 작업에 사용됩니다. |
| 게임 예시 | 애니메이션 완료 콜백: 캐릭터 공격 애니메이션이 끝나면, 데미지 판정을 시작하라고 알립니다. |
| 핵심 | “나중에 전화 주세요” 라고 약속해놓고, 작업 완료 시점에 약속대로 호출되는 함수. |
| 키워드 | 인터페이스 (Interface) = 상호작용 접점 |
|---|---|
| 역할 | 서로 다른 프로그램이나 시스템이 통신할 수 있도록 미리 정의된 약속과 방법을 제공하는 매개체입니다. |
| 게임 예시 | 게임 엔진 API: Unity의 GetComponent()처럼, 엔진의 복잡한 내부 동작을 몰라도 기능을 쉽게 사용할 수 있도록 제공하는 함수들. |
| 핵심 | 내부 구현은 숨기고, 외부에서 기능을 사용할 수 있는 규격화된 창구. |
| 키워드 | 추상 (Abstract) = 핵심만 뽑아내다 |
|---|---|
| 역할 | 프로그램의 복잡한 세부 구현 내용은 숨기고, 사용자가 핵심적인 기능만 쉽고 간편하게 사용할 수 있도록 단순화하는 설계 기법입니다. |
| 일반 예시 | 자동차 운전: 운전자가 엔진의 복잡한 작동 방식(내부 구현)을 몰라도, 핸들/액셀/브레이크(추상화된 인터페이스)만으로 운전이 가능합니다. |
| 핵심 | 불필요한 정보는 감추고, 꼭 필요한 정보만 노출하는 기술. |
이 세 가지 용어는 하나의 시스템 내에서 책임의 범위에 따라 역할이 분리됩니다.
| 구분 | 매니저 (Manager) | 컨트롤러 (Controller) | 핸들러 (Handler) |
|---|---|---|---|
| 이름의 의미 | 총괄 관리자 (전체를 책임) | 조종자/지배자 (특정 대상을 제어) | 처리하는 사람 (특정 이벤트를 처리) |
| 책임 범위 | 가장 넓음 (시스템 전체) | 중간 (특정 객체의 행동 논리) | 가장 좁음 (특정 이벤트 처리) |
| 주요 역할 | 시스템 상태 초기화 및 유지, 다른 객체 간 통신 조정 | 특정 객체의 동작(AI, 이동 등)을 제어하고 게임 로직을 실행 | 외부/내부 이벤트를 받아 즉시 처리 로직 실행 |
| 게임 예시 | SoundManager, GameManager, SceneManager |
PlayerController, AIController, CameraController |
InputHandler, CollisionHandler, ExceptionHandler |
| 비유 | CEO (회사 전체 목표 설정 및 부서 간 조정) | 부서장 (실무 팀의 목표와 행동 방식 결정) | 실무 팀원 (특정 업무를 즉시 처리) |
CollisionHandler): “캐릭터와 아이템이 충돌했다는 이벤트를 감지”하고 컨트롤러에게 알립니다.PlayerController): 충돌 이벤트 정보를 받고 “아이템을 주울 수 있는 상태인지 (로직) 확인”하고, 매니저에게 아이템 정보를 넘깁니다.InventoryManager): 아이템 정보를 받아 인벤토리에 추가하고 (상태 변경), 아이템 획득 효과음을 SoundManager (다른 매니저)에게 요청합니다.이처럼 각자의 역할이 명확히 분리되어야 시스템이 유연하고 유지보수하기 쉬워집니다.