Saturday, February 22, 2014

Strive for LOOSELY COUPLED designs between objects that interact

@desc
  : 서로 상호작용을 하는 객체 사이에서는 가능하면,
    느슨하게 결합하는 디자인을 사용해야 한다.

  : 느슨한 결합은 변경 사항이 생겨도 무난히 처리할 수 있는 유연성을 제공한다.
    객체 사이의 상호의존성을 최소화하기 때문이다.

@example
  : Subject Interface, Observer Interface



Ex1. Subject는 Observer에 대해 Observer interface를 구현한다는 것만 안다.
Observer가 무엇을 하는지, 어떻게 구현되는지는 알 필요가 없다.

Ex2. Observer는 언제든지 새로 추가할 수 있다.
Subject는 Observer interface 목록에만 의존한다.
각각의 Observer가 언제 추가되는지, 언제 제거되는지는 중요하지 않다.

Ex3. 새로운 형식의 Observer를 추가하려고 해도 Subject 변경은 없다.
새로운 형식의 Observer가 Observer interface만 구현한다면 문제 없다.

Ex4. Subject나 Observer가 바뀌더라도 서로에게 미치는 영향은 없다.
Subject interface, Observer interface를 구현한다는 조건만 만족하면 된다.
그 외 변경 사항은 서로에게 아무런 영향도, 문제도 주지 않는다.


@reference
  : Head First Design Patterns
    by Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates, 1st Ed.

No comments:

Post a Comment