Whiteship's Note

Observe Pattern 예제(끝)

Design Pattern : 2006.10.08 13:49




Auctioneer는 Subjct를 대신했고 Bidder는 Observer 인터페이스를 대신하도록 만들었다. 그리고 각각 ConcereAuctioneer와 ConcreteBidder 클래스를 작성하여 인터페이스를 통해 접근하도록 했다.

그리고 test 클래스를 작성하기 시작했다.

먼저 경매 물품이 나오고 (경매 시작 가격이 있을 것이라 생각했다.) 그다음 경매자들이 그 물품의 구독자(observer)로 등록이 되며(여기서는 구독자 List를 등록하도록 했으며 한명의 구독자를 등록하는 것도 가능하다.) 경매가 시작되면 경매 초기 가격을 모든 구독자들에게 알려 주도록 하였다.

작성된 실제 코드와 초기에 모델링 했던 클래스 다이어그램과는 차이가 있었다.

Auctioneer 인터페이스에서 Bidder를 List로 갖는것이 아니라 ConcereteAuctioneer에서 List로 갖도록 하였다. 인터페이스에 있는 필드에게는  public 만 허용이 되는데 public으로 List를 가지고 상속해서 사용한다면 언제든 List에 바로 접근하여 변경이 가능하다는 것인데 그렇게 되면 ConcreteAuctioneer에 있는 addBidder나 deleteBidder는 무용지물이 된다.

그리고 addBIdders에서 List를 통째로 추가하는 메소드를 추가하였는데 List로 추가를 하면 deleteBidder를 하기가 복잡해 진다. List를 통째로 추가하는 경우 해당 그룹에 있는 원소는 구독을 포기하기가 어렵게 되는데 그렇다면 그룹(List)으로 구독을 등록(add)하는 방법은 제거하고 개인별로(addBIdder) 구독하도록 하는 것이 상황에 맞을 듯하다.


위와 같이 test코드를 수정하고 JUnit을 실행시킨 콘솔 창의 결과물 입니다.


'Design Pattern' 카테고리의 다른 글

Decorator Pattern 예제  (0) 2006.10.20
엔터프라이즈 컴퓨팅 중간고사  (3) 2006.10.18
3장. Decorator Pattern(계속)  (1) 2006.10.17
3장 Decorator Pattern  (0) 2006.10.17
헤드 퍼스트 새책이 나왔었네요  (2) 2006.10.17
Observe Pattern 예제(끝)  (0) 2006.10.08
Observer Pattern 예제  (0) 2006.10.08
Strategy Pattern 예제(끝)  (0) 2006.10.08
Strategy Pattern 예제(계속)  (0) 2006.10.08
Strategy Pattern 예제(계속)  (0) 2006.10.08
Strategy Pattern 예제  (0) 2006.10.08
top