이번 강의는 의존(Dependency) 관계 실습(Part 1 – 설계까지)입니다.
*아직 대리자(delegate)를 학습하기 전이면 간략히 보신 후에 대리자를 학습 후에 보시기 바랍니다.*
의존 관계는 원본 개체의 상태가 바뀌면 의존 개체의 상태도 바뀌는 형식 사이의 관계입니다. 그리고 팩토리 형식과 상품 형식 사이의 관계도 의존 관계로 표현합니다. 즉, 특정 형식 개체 생성을 책임지는 형식이 팩토리이고 팩토리에서 만들어지는 형식 개체가 상품 개체입니다.
이번 실습에서는 Item 형식과 이를 화면에 노출하는 ItemControl 형식간의 관계를 표현할 것입니다. Item 형식 개체의 속성이 바뀌면 ItemControl 개체에서도 화면 내용을 변경해야겠죠. 이 때 Item 형식 개체를 원본 개체라고 부릅니다. 물론, ItemControl 개체는 의존 개체입니다.
그런데 Item 개체 정보가 바뀌었다는 것을 ItemControl은 어떻게 알수 있을까요? 의존 관계를 제공하기 위해서는 두 개체 사이에 Binding 정보를 관리할 수 있는 시스템 혹은 개체가 필요합니다. 여기에서는 BindingSystem을 정의합시다.
BindingSystem은 내부에 Item 개체 값이 바뀔 때 처리를 위한 이벤트를 멤버로 갖습니다. ItemControl은 BindingSystem에게 Item 개체 정보가 바뀔 때 처리할 이벤트 핸들러를 등록합니다.
Item 개체는 자신의 값이 바뀌면 BindingSystem에게 이를 통보할 거예요. 그리고 BindingSystem에서는 이벤트 핸들러를 등록한 것이 있으면 이를 호출합니다. 결국 ItemControl에서 등록한 이벤트 핸들러가 동작하는 것이죠.
이와 같은 원리로 ItemContrl은 Item 개체의 값이 바뀐 사실을 인지하고 화면에 바뀐 값을 출력할 수 있습니다.