Event(이벤트)
- 이벤트를 발생시키는 쪽이 하나라면 반응하는 쪽은 하나 이상이 될 수 있다.
- 어떤 이벤트가 발생하면 그 이벤트에 등록해 둔 모든 함수들이 자동으로 발동된다.
- 등록되있는 함수들은 언제 발동될지, 어떻게 발동될지 관심이 없다.
- 이벤트를 발생시키는 측도 자신에게 어떤 함수들이 등록되어있는지 관심이 없다.
- 코드가 간결해진다.
Event를 사용하는 이유
- 두 오브젝트 사이의 꼬여있는 관계를 완화하기 위해
- 꼬임이 심하다 : A,B 오브젝트가 너무 심하게 엮어 있어서 A가 사라지면 B가 영향을 받아서 수정이 쉽지 않은 것
- 꼬임이 약하다 : A,B가 서로를 몰라 코드를 추가하거나 삭제해도 영향을 서로 받지 않는 것
- 코드를 짤 때, 꼬임을 줄이는 것이 초점
Event에서의 관계
- publisher : 이벤트를 발동시켜서 이벤트가 발동했다는 사실을 뿌리는 오브젝트
- 이벤트를 만들어만 둠
- subscriber : 어떤 이벤트에 자신의 기능을 등록하고 기다리는 오브젝트
- publisher에게 가서 기능을 등록하고 떠남