본문 바로가기

헤드퍼스트2

[헤드퍼스트 디자인패턴](3) 데코레이터 패턴(Dacorator Pattern) 상속맨 디자인에 눈을 뜨다 상속 남용 → 실행 중에 클래스를 꾸미는 방법을 배웁니다. 데코레이터 패턴을 배우면 기존 클래스 코드를 바꾸지 않고도 객체에 새로운 임무를 추가할 수 있습니다. 스타버즈라는 빠르게 성장한 커피 업체가 있습니다. 처음에는 Beverage 라는 추상 클래스를 만들고 모든 음료를 이 클래스의 서브 클래스로 구현하였습니다. 하지만 음료와 옵션의 종류가 늘자 DarkRoastWithWhip, DecafWithSteamedMilk 같은 수많은 클래스가 폭발적으로 생겨났습니다. 이 스타버즈는 어떠한 디자인 원칙을 어기지 않은걸까요? (힌트 2가지) (정답 확실 X) 애플리케이션에서 달라지는 부분을 찾아내고 달라지지 않는 부분과 분리한다. 구현보다는 인터페이스에 맞춰서 프로그래밍한다. 상속보.. 2023. 1. 25.
[헤드퍼스트 디자인패턴](2) 옵저버 패턴 : 객체들에게 연락 돌리기 소프트웨어 개발에서 바뀌지 않는 단 하나 = 변화 확장성 : 디스플레이 요소를 더하거나 뺄 수도 있다. 디자인 원칙 애플리케이션에서 달라지는 부분을 찾아내고 달라지지 않는 부분과 분리한다. 신문사 + 구독자 = 옵저버 패턴 신문사를 주제(subject), 구독자를 옵저버(observer) 느슨한 결합의 위력(Loose Coupling) 주제는 옵저버가 특정 인터페이스를 구현한다는 사실만 압니다. 옵저버는 언제든지 새로 추가할 수 있습니다. 새로운 형식의 옵저버를 추가할 때도 주제를 변경할 필요가 전혀 없습니다. 주제와 옵저버는 서로 독립적으로 재사용할 수 있습니다. 주제나 옵저버가 달라져도 서로에게 영향을 미치지 않습니다. 디자인 원칙 상호작용하는 객체 사이에는 가능하면 느슨한.. 2023. 1. 24.