[헤드퍼스트 디자인패턴] 10장. 객체의 상태 바꾸기 - 상태 패턴
·
스터디/객체지향
해당 게시물은 '헤드퍼스트 디자인패턴'을 읽고 내용을 정리한 글입니다.헤퍼디 스터디 링크: https://github.com/SSAFY11th-book-study/book-study뽑기 기계로 알아보는 상태(state) 다음 상태 다이어그램처럼 작동하는 뽑기 기계를 제어하는 코드를 만들어야 한다고 가정하자. 해당 다이어그램은 다양한 조건에 따라 기계의 상태가 바뀐다.때문에, 우선 어떤 상태가 있는지 모아본다. 상태 패턴의 정의상태 패턴의 정의는 다음과 같다.상태 패턴(State Pattern)을 사용하면 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있습니다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있습니다.해당 패턴은 상태를 별도의 클래스로 캡슐화한 다음 현재 상태를 나타내는..
[헤드퍼스트 디자인패턴] 9장. 컬렉션 잘 관리하기 - 반복자 패턴과 컴포지트 패턴
·
스터디/객체지향
해당 게시물은 '헤드퍼스트 디자인패턴'을 읽고 내용을 정리한 글입니다.헤퍼디 스터디 링크: https://github.com/SSAFY11th-book-study/book-study반복자 패턴의 정의반복자 패턴의 정의는 다음과 같다.반복자 패턴(Iterator Pattern)은 컬렉션의 구현 방법을 노출하지 않으면서 집합체 내의 모든 항목에 접근하는 방법을 제공한다. 해당 패턴을 사용하면 집합체 내에서 어떤 식으로 일이 처리되는지 전혀 모르는 상태에서 그 안에 들어있는 모든 항목을 대상ㅇ으로 반복 작업을 수행할 수 있다. 반복자 패턴을 사용하므로서 얻을 수 있는 효과는 '컬렉션 객체 안에 들어있는 모든 항목에 접근하는 방식이 통일되어 있으면, 종류에 관계없이 모든 집합체에 사용할 수 있는 다형적인 코드를..
[헤드퍼스트 디자인패턴] 8장. 알고리즘 캡슐화하기 - 템플릿 메소드 패턴
·
스터디/객체지향
해당 게시물은 '헤드퍼스트 디자인패턴'을 읽고 내용을 정리한 글입니다.헤퍼디 스터디 링크: https://github.com/SSAFY11th-book-study/book-study커피와 홍차 만들기로 알아보는 템플릿 메소드공통된 부분 찾아서 추상화하기다음과 같이 커피와 홍차를 만드는 코드가 있다고 가정해 보자.public class Coffee { void prepareRecipe() { boilWater(); brewCoffeeGrinds(); pourInCup(); addSugarAndMilk(); } // 메소드 구현...}public class Tea { void prepareRecipe() { boilWater(); ..
[헤드퍼스트 디자인패턴] 7장. 적응시키기 - 어댑터 패턴과 퍼사드 패턴
·
스터디/객체지향
해당 게시물은 '헤드퍼스트 디자인패턴'을 읽고 내용을 정리한 글입니다.헤퍼디 스터디 링크: https://github.com/SSAFY11th-book-study/book-study 객체지향에서의 어댑터란?객체지향 어댑터의 역할은 일상생활에서 쓰이는 어댑터와 똑같은 역할을 한다.어떤 인터페이스를 클라이언트에서 요구하는 형태로 적응시키는 역할이다.그림과 함께 조금 더 자세히 설명하자면, 어댑터는 클라이언트로부터 요청을 받아서 새로운 업체에서 제공하는 클래스를 클라이언트가 받아들일 수 있는 형태의 요청으로 변환해 주는 중개인 역할을 한다.위 그림에서 보이는 것 처럼, 어댑터라는 새로운 클래스를 만들기 때문에, 기존 시스템과 업체에서 제공한 클래스의 코드를 변경하지 않아도 된다. 오리와 칠면조의 예시를 통한 ..
[헤드퍼스트 디자인패턴] 6장. 호출 캡슐화하기 - 커맨드 패턴
·
스터디/객체지향
해당 게시물은 '헤드퍼스트 디자인패턴'을 읽고 내용을 정리한 글입니다.헤퍼디 스터디 링크: https://github.com/SSAFY11th-book-study/book-study 식당 주문을 통해 커맨드 패턴 알아보기식당에서의 음식 주문 과정을 그림을 통해 알아보자.해당 과정에서, 각각의 등장 인물(?)들의 역할은 다음과 같이 나눠져 있다.주문서는 주문 내용을 캡슐화한다.따라서 종업원은 어떤 메뉴를 누가 준비하는지 몰라도 된다.종업원은 주문서를 요리사에게 전달한다.정확히는 주문서에 있는 orderUp() 메소드를 실행시킨다.주방장은 주문서의 내용에 맞는 음식을 준비한다.종업원이 주문서를 전달하면(주문서에 있는 orderUp()) 메소드를 호출하면 주문을 받는 방식이다.이 예시에서 중요한 것은 어떤 것..
[헤드퍼스트 디자인패턴] 5장. 하나뿐인 특별한 객체 만들기 - 싱글턴 패턴
·
스터디/객체지향
해당 게시물은 '헤드퍼스트 디자인패턴'을 읽고 내용을 정리한 글입니다.헤퍼디 스터디 링크: https://github.com/SSAFY11th-book-study/book-study 고전적인 싱글턴 패턴 구현법 (문제 有)public class Singleton { private static Singleton uniqueINstance; // Sigleton 클래스의 하나뿐인 인스턴스를 저장하는 정적 변수 // 기타 인스턴스 변수 private Singleton() {} // 생성자를 private로 선언했으므로 Singleton에서만 클래스의 인스턴스를 만들 수 있다. public static Singleton getInstance() { // getInstance..