Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CH1] 논의 - p30 Bag 클래스 리팩터링 이후, 설계 선택 #6

Open
eotkd4791 opened this issue Nov 28, 2024 · 0 comments
Open
Assignees
Labels

Comments

@eotkd4791
Copy link
Collaborator

eotkd4791 commented Nov 28, 2024

p30부터 나오는 리팩터링 이후, 아래 표시한 코드가 추가되었습니다.
책에서는 이렇게 설계를 변경한 후, TicketOffice와 Audience 사이에 의존성이 추가되어 트레이드오프의 시점이 왔다고 얘기합니다. 여러분이라면 어떻게 설계를 하시겠습니까?

트레이드오프(Trade-off)란? - 상충관계. 장점이 있으면 단점이 있는 것.

1. (리팩토링 이전) TicketOffice와 Bag의 자율성이 낮지만, 결합도는 낮은 설계 

vs

2. (리팩토링 이후) TicketOffice가 Audience에 의존하여 결합도가 증가했지만 TicketOffice와 Bag이 자율성을 갖는 설계
public class TicketOffice {
  private Long amount;  
  private List<Ticket> tickets = new ArrayList<>();

  public TicketOffice(Long amount, Ticket ...tickets) {
    this.amount = amount;
    this.tickets.addAll(Arrays.asList(tickets));
  }

+  public void sellTicketTo(Audience audience) {
+    plusAmount(audience.buy(getTickets()));  
+  }
  
  private Ticket getTicket() {
    return tickets.remove(0);
  }

  private void plusAmount(Long amount) {
    this.amount += amount;
  }
}
@eotkd4791 eotkd4791 self-assigned this Nov 28, 2024
@eotkd4791 eotkd4791 changed the title [CH1] 논의 - p30 Bag 클래스 리팩터링 이후, 의존성 추가? [CH1] 논의 - p30 Bag 클래스 리팩터링 이후, 설계 선택 Nov 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant