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을 실행시킨 콘솔 창의 결과물 입니다.

[#M_결과물 보기|줄이기| Auctioneer를 생성합니다.
이 경매 물품의 경매 시작 가격은 50달러 입니다.

Bidder를 생성하고 경매자로 등록 합니다.
임요환 경매자는 100 달러를 가지고 경매에 참여 합니다.
홍진호 경매자는 80 달러를 가지고 경매에 참여 합니다.
박정석 경매자는 70 달러를 가지고 경매에 참여 합니다.

현재 경매 가격을 알려줍니다.
임요환 경매자는 현재 물품 가격이 50 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 0입니다.
홍진호 경매자는 현재 물품 가격이 50 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 0입니다.
박정석 경매자는 현재 물품 가격이 50 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 0입니다.

임요환 경매자가 현재 물품 가격을 60로 올립니다.
임요환 경매자는 현재 물품 가격이 60 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 60입니다.
홍진호 경매자는 현재 물품 가격이 60 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 0입니다.
박정석 경매자는 현재 물품 가격이 60 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 0입니다.
현재 물품의 가격은  60입니다.

홍진호 경매자가 현재 물품 가격을 65로 올립니다.
임요환 경매자는 현재 물품 가격이 65 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 60입니다.
홍진호 경매자는 현재 물품 가격이 65 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 65입니다.
박정석 경매자는 현재 물품 가격이 65 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 0입니다.
현재 물품의 가격은  65입니다.

박정석 경매자가 현재 물품 가격을 70로 올립니다.
임요환 경매자는 현재 물품 가격이 70 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 60입니다.
홍진호 경매자는 현재 물품 가격이 70 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 65입니다.
박정석 경매자는 현재 물품 가격이 70 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 70입니다.
현재 물품의 가격은  70입니다.

임요환 경매자가 현재 물품 가격을 75로 올립니다.
임요환 경매자는 현재 물품 가격이 75 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 75입니다.
홍진호 경매자는 현재 물품 가격이 75 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 65입니다.
박정석 경매자는 현재 물품 가격이 75 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 70입니다.
현재 물품의 가격은  75입니다.

박정석 경매자가 경매에서 빠집니다.

홍진호 경매자가 현재 물품 가격을 80로 올립니다.
임요환 경매자는 현재 물품 가격이 80 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 75입니다.
홍진호 경매자는 현재 물품 가격이 80 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 80입니다.
현재 물품의 가격은  80입니다.

임요환 경매자가 현재 물품 가격을 85로 올립니다.
임요환 경매자는 현재 물품 가격이 85 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 85입니다.
홍진호 경매자는 현재 물품 가격이 85 인지 알고 있습니다. 그리고 현재 입찰가로 제안한 가격은 80입니다.
현재 물품의 가격은  85입니다.

홍진호 경매자가 경매에서 빠집니다.

임요환 경매자가 85 달러로 낙찰에 성공했습니다._M#]