Java/디자인패턴
-
Factory PatternJava/디자인패턴 2024. 1. 17. 11:10
🤔 인터페이스를 사용한다고 해도 구상 클래스의 인스턴스를 만들어야 하지 않나? Duck duck = new MallardDuck(); // Duck이라는 인터페이스를 써서 유연하게 만들려고 해도, 그럼에도 구상 클래스의 인스턴스를 만들어야 한다. Duck duck; if (picnic) { duck = new MallardDuck(); } else if (hunting) { duck = new DecoyDuck(); } else if (inBathTub) { duck = new RubberDuck(); } 이 코드를 보면 구상 클래스의 인스턴스가 여러 개 있고, 그 인스턴스의 형식은 실행 시 조건에 따라 결정된다. 변경하거나 확장할 때, 코드를 다시 확인하고 새롭게 추가하거나 기존 코드 제거 => 관리와..
-
Decorator PatternJava/디자인패턴 2024. 1. 11. 17:39
🍦 Decorator Pattern 객체에 추가 요소를 동적으로 더할 수 있는 디자인 패턴 서브 클래스 만들 때보다 훨씬 유연하게 기능을 확장할 수 있음 데코레이터의 슈퍼 클래스는 자신이 장식하고 있는 객체의 슈퍼 클래스와 동일 ~ 원래 객체에 들어갈 자리에 데코레이터 넣어도 상관 X 힌 객체를 여러 개의 데코레이터로 감쌀 수 있음 객체는 언제든지 감쌀 수 있음, 실행중에 필요한 데코레이터를 마음대로 적용 가능 - 객체 구성(인스턴스 변수로 다른 객체 저장하는 방식) 사용 ~ 첨가물을 다양하게 추가해도 유연성을 잃지 않도록 예시 ) 커피 주문 public abstract class Beverage { String description = "제목 없음"; public String getDescription..
-
Observer PatternJava/디자인패턴 2024. 1. 4. 18:07
🍄 Observer Pattern이란 무엇인가? 한 객체의 상태가 바뀌면, 그 객체에 의존하는 모든 객체들에 연락이 가고 자동으로 내용이 갱신되는 방식 주제에서 중요한 데이터 관리 → 주제 데이터 바뀌면 옵저버에게 바뀐 값 / 바뀌었다는 소식이 전해진다. 옵저버 객체들은 주제를 구독하고 있으며(주제 객체에 등록되어 있음), 주제 데이터가 바뀌면 갱신 내용을 전달받는다. Subject : Observer = 1 : N 관계 public interface Subject { public void registerObserver(Observer o); public void removeObserver(Observer o); public void notifyObservers(); // 모든 옵저버들에게 변경내용을 알..