본문 바로가기

game dev/unity

커플링을 줄이기 위한 방법 이벤트

 

유니티에서 이벤트는 Publisher-Subscriber 패턴을 구현하는 데 자주 사용된다. Subscriber  가 구독하고 Publisher 가 발동하여 클래스간의 커플링을 줄이는 방법이다. 또한 외부 직접 호출을 막고 하나의 기능으로 덮어씌우는 것을 막음으로써 델리게이트 보다 더 안정성이 높다. 

  • Publisher: 사건을 발생시키는 객체이다. 특정 조건이 충족되면 이벤트를 발동(발생)시킨다.
  • Subscriber: 사건을 구독하는 객체이다. Publisher가 사건을 발동하면, Subscriber는 미리 등록한 이벤트 핸들러를 통해 그 사건에 반응한다.

 

 

 

 

주요 차이점

 

델리게이트가 아닌 이벤트로 설정했을 경우

 

 

1.외부 직접 호출 방지: 이벤트는 이벤트를 선언한 클래스 외부에서 직접 호출될 수 없다. 이벤트는 오직 이벤트를 발생시키는 클래스 내에서만 호출할 수 있다. 

 

 

2. 덮어쓰기 방지: 이벤트 핸들러는 델리게이트와 달리 외부에서 이벤트 자체를 덮어쓰는 것을 방지한다. 이벤트 핸들러를 추가하거나 제거하는 작업만 가능하다.

 

 

* 아래는 chatgpt 추가 요약

클래스 간의 커플링 감소

이벤트는 클래스 간의 커플링을 줄이는 데 유용합니다. Publisher는 자신이 어떤 Subscriber가 자신의 이벤트를 구독하고 있는지 알 필요가 없으며, 단지 이벤트를 발생시키기만 하면 됩니다. 반면, Subscriber는 특정 Publisher의 이벤트를 구독하고, 필요할 때 이벤트 핸들러를 통해 작업을 수행합니다.

요약

  • Publisher-Subscriber 패턴: 유니티에서 이벤트는 Publisher-Subscriber 패턴을 구현하여 클래스 간의 커플링을 줄입니다.
  • 안정성: 이벤트는 외부에서 직접 호출할 수 없고, 델리게이트처럼 덮어쓸 수 없어 더 높은 안정성을 제공합니다.
  • 코드 유지보수성: 이벤트를 사용하면 코드의 유지보수성과 확장성이 높아집니다. Publisher와 Subscriber 간의 느슨한 결합(loose coupling)을 유지할 수 있습니다.

따라서, 이벤트는 델리게이트에 비해 더 안정적이고, 클래스 간의 커플링을 줄이는 데 효과적입니다. 유니티에서 이러한 이벤트 시스템을 통해 더 구조적이고 유지보수 가능한 코드를 작성할 수 있습니다.

'game dev > unity' 카테고리의 다른 글

유니티에서 애니메이션 클립 복사하기  (0) 2024.06.15
액션과 람다  (0) 2024.06.15
유니티 이벤트 시스템  (0) 2024.06.13
레이케스트를 이용한 사물 옮기기  (0) 2024.06.12
[활용 툴] 에셋 정리  (0) 2024.06.11