본문 바로가기

디자인패턴10

[헤드퍼스트 디자인패턴] 04. 싱글턴 패턴(Singleton Pattern) [헤드퍼스트 디자인패턴] 04. 싱글턴 패턴(Singleton Pattern) 1. 싱글턴 패턴이란? 클래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공한다. 2. 고전적인 싱글턴 패턴 구현법 public class Singleton { private static Singleton uniqueInstance; // 기타 인스턴스 변수 private Singleton() {} public static Singleton getInstance() { if(uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } // 기타 메소드 } 생성자는 private 이므로 외부에서 new 키워드를 통해 객체.. 2022. 6. 18.
[헤드퍼스트 디자인패턴] 03. 데코레이터 패턴(Decorator Pattern) [헤드퍼스트 디자인패턴] 03. 데코레이터 패턴(Decorator Pattern) 1. 데코레이터 패턴이란? 객체에 추가 요소를 동적으로 더할 수 있다. 데코레이터를 사용하면 서브클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있다. 2. 구현 목표 1. 카페의 주문 시스템을 만든다. 2. 고객은 커피를 주문할 때 우유나 두유, 모카를 추가하고 그 위에 휘핑크림을 얹기도 한다. 3. 고려사항 - 추후 옵션이 늘어날 수 있다. - 각각을 추가할 때마다 커피 가격이 올라가는 점을 고려해야 한다. 4. 구현 4.1 문제가 있는 설계 (상속을 사용 할 경우) 문제점 첨가물이 가격이 바뀔 때 마다 기존 코드를 수정해야 한다. 첨가물 종류가 많아지면 새로운 메소드를 추가해야 하고, cost() 메소드를 수정해.. 2022. 6. 18.
[헤드퍼스트 디자인패턴] 02. 옵저버 패턴(Observer Pattern) [헤드퍼스트 디자인패턴] 02. 옵저버 패턴(Observer Pattern) 1. 옵저버 패턴이란? 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다. 2. 구현 목표 1. WeatherData 클래스에는 3가지 측정값(온도, 습도, 기압)의 게터 메소드가 있다. 2. 새로운 기상 측정 데이터가 들어올 때마다 measurementsChanged() 메소드가 호출된다. 3. 기상 데이터를 사용하는 3가지(현재 조건, 기상 통계, 기상 예보) 디스플레이를 구현한다. 4. 디스플레이를 업데이트하도록 measurementsChanged() 메소드에 코드를 추가해야 한다. 3. 고려사항 - 확장성 : 추후 디스.. 2022. 6. 12.
[헤드퍼스트 디자인패턴] 01. 전략패턴 [헤드퍼스트 디자인패턴] 01. 전략패턴 오리 시뮬레이션 게임, SinuUduck 1. 메타몽은 오리 시뮬레이션 게임을 만드는 회사를 다니고 있습니다. 이 게임에는 매우 다양한 오리가 등장하여, 메타몽은 표준 객체지향 기법을 사용하여 Duck 이라는 슈퍼 클래스를 만든 다음, 그 클래스를 확장해서 서로 다른 종류의 오리를 만들었습니다. 그러나 회사 임원진은, 오리에게 특별한 기능이 있어야 한다며 오리를 날게 해달라고 했고, 메타몽은 Duck 클래스에 fly() 기능을 추가하였습니다. 이럴수가! 고무 오리는 날수 없는데 고무 오리가 날아다니는 오류가 발생했습니다. 그래서 quack() 처럼 fly()도 오버라이드 처리를 해주었습니다. 가짜 오리 클래스도 새로 추가해주었습니다. 2. 메타몽은 방금 임원진이 .. 2022. 6. 5.
728x90
반응형