본문 바로가기

728x90
반응형

책리뷰/헤드퍼스트 디자인패턴

(5)
헤드퍼스트 디자인패턴 - 싱글턴 패턴 목차 고전적인 싱글턴 패턴 구현법 public class Singleton { private static Singleton uniqueInstance; private Singleton() {} public static Singleton getInstance() { if(uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } } Singleton클래스의 인스턴스를 저장하는 정적 변수를 선언 후 getInstance()메소드를 통해 인스턴스 생성한다. 싱글턴 패턴의 정의 싱글턴 패턴은 클래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공한다. 실제로 하나뿐인 인스턴스를 관리하도록 만들면 된다. ..
헤드퍼스트 디자인패턴 - 팩토리 패턴 목차 NEW 의 문제 인터페이스에 맞춰서 코딩하면 어떤 클래스든 인터페이스만 구현하면 사용할 수 있다. 다형성 덕분에 가능하다. 반대로 구상 클래스를 많이 사용하면 새로운 구상 클래스가 추가될 때마다 코드를 고쳐야 한다. OCP - 변경에 닫혀 있는 코드. 최첨단 피자 코드 만들기 Pizza orderPizza(String type) { Pizza pizza = new Pizza(); pizza.prepare(); pizza.bake(); pizza.cut(); pizza.box(); return pizza; } 피자 종류는 여러가지가 될 수 있다. Pizza orderPizza(String type) { Pizza pizza; if(type.equals("cheese")) { pizza = new Ch..
헤드퍼스트 디자인패턴 - 데코레이터 패턴 목차 초대형 커피전문점 주문시스템 만들기 다양한 음료를 모두 포괄하는 주문 시스템을 만들려고 한다. 만약 Beverage클래스에 우유, 두유, 모카, 휘핑크림을 추가하려고 할 때 인스턴스 변수를 추가하면 메뉴마다 서브클래스를 만들고 각각 cost()를 구한 후 슈퍼클래스에서 구현한 cost()를 호출해 첨가물 비용을 더한다. 인스턴스 추가로 발생하는 문제점 첨가물 가격이 바뀔때마다 기존 코드를 수정해야함 첨가물 종류가 많아지면 새로운 메서드를 구현해야하고, 슈퍼클래스의 cost()를 고쳐야 한다. 새로운 음료가 출시될 경우 첨가물이 들어가면 안되는 음료가 있을 수도 있다. (필요없는 메서드를 상속받음) 고객이 모카를 두 번 주문 할 경우가 있을 수 있다. ☝🏻 디자인 원칙 클래스는 확장에는 열려있어야 하..
헤드퍼스트 디자인패턴 - 옵저버 패턴 목차 가상 모니터링 애플리케이션 알아보기 Weather-O-Rama와 계약하면 WeatherData객체로 현재조건, 기상통계, 기상예보 3가지 항목이 제공된다. 디스플레이 장비에 업데이트 하는 부분은 직접 개발 해야 한다. 가상 스테이션 코드 구현 WeatherData -------------------- getTemperature() getHumidity() getPressure() measurementsChanged() Weather클래스에는 가장 최근에 측정된 온도, 습도, 기압 값을 리턴하는 메소드가 있다 WeatherData에서 갱신된 값을 가져올 때마다 measurementsChanged() 메소드가 호출된다. 디스플레이를 구현하려면 3가지 요소를 구현해야한다. 디스플레이 업데이트하도록 mea..
헤드퍼스트 디자인패턴 - 전략 패턴 목차 전략 패턴 (Strategy Pattern) 이란? 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해주는 패턴 전략패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있음. 오리 시뮬레이션 게임(SimUduck) 오리 시뮬레이션 게임회사에서는 표준 객체지향 기법을 사용해서 Duck이라는 슈퍼클래스를 만든 후 그 클래스를 확장해서 다른 종류의 오리를 만들었다. 오리 시뮬레이션게임 차별화하기 기존 클래스에 오리가 나는 기능을 추가해서 게임을 차별화해야할 경우 ⚠️ 경고! 몇몇 서브 클래스만 날아야하는데, 적합하지 않은 일부 클래스에 나는 행동이 추가됨(ex: 고무 오리들이 날아다님) 상위클래스에 행동을 추가할 경우 코드를 재사용하는 점에서는 상속을 활용한..

728x90
반응형