느슨한 결합과 강한 결합
-
강한 결합
클래스들이 서로 의존성을 가지는 경우를 의미한다
예를 들면 Person클래스가 생성될때 Person의 신분을 인증하는 Check기능을 위해 Card를 초기화해야한다면 Person은 Card와 강한 결합을 가진다 라고 할수 있겠다.
하지만 이렇게 된다면 추후 핸드폰으로 인증할수 있는 기능이 생긴다면 유지보수에 힘들수 있다.
-
느슨한 결합
- 느슨한 결합은 하나의 컴포넌트 변경이 다른 컴포넌트들의 변경을 요구하는 위험을 줄이는 목적으로 내부 의존성을 줄이는것을 추구하는 디자인 목표로 한다
- 실물에 의존하지 말고 추상적 설계에 의존한다 (DIP원칙)
- Person이 왜 Card가 필요한지, 이유에 대해서 파악하고 그 이유인 Check기능을 위한 추상적인 설계에 의존하는 방향
- Person은 Card를 가지는게 아니라 ICheck라는 인터페이스를 상속받은 Card나 Phone을 가질수 있게 하면 추후 Card나 Phone말고 추가된다면 대응하기 쉬울것이다.
<aside>
💡 느슨한 결합(Loose Coupling)이 가지는 장점
→ 항후 시스템 변경 사항에 대해 손쉽게 대처할 수 있음.
</aside>
언리얼 C++에서 딜리게이트를 구현할때 값이 변경될때 오브젝트들에게 브로드캐스팅을 하는 발행 구독 모델을 구현할 수 있는데 거기서 느슨한 결합으로 구현하게 되면 아래와 같은 장점이 생긴다.
- 클래스는 자신이 해야 할 작업에만 집중 할 수 있음.
- 외부에서 발생한 변경 사항에 대해 영향을 받지 않음.
- 자신의 기능을 확장하더라도 다른 모듈에 영향을 주지 않음.
언리얼 C++ 델리게이트의 선언 방법에는 몇개의 인자를 가질지, 어떤방식으로 동작하는지 (MULTICAST 사용유무 ), 언리얼 에디터의 블루프린트와 연동할 것인지 (DYNAMIC 사용유주)
에 따라 어떤 매크로로 델리게이트를 선언해야하는지 달라진다.
- DECLARE_MULTICAST_DELEGATE...
- DECLARE_DYNAMIC_DELEGATE...
- DECLARE_DYNAMIC_MULTICAST_DELEGATE...
- DECLARE_DYNAMIC_DELEGATE...
- DECLARE_DYNAMIC_MULTICAST_DELEGATE...
참고 문헌 : 델리게이트 | 언리얼 엔진 5.3 문서 (unrealengine.com)