본문 바로가기

분류 전체보기73

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