본문 바로가기
728x90

디자인 패턴8

역할 사슬 패턴(Chain Of Responsibility) 요청에 대한 처리를 어느 객체가 수행할 수 있는지 모를 때 사용한다. 요청이 들어오면, 이를 수신하는 객체가 해당 요청을 처리할 수 없는 경우 다음 객체에게 요청을 넘긴다. 요청을 처리할 수 있는 객체가 요청을 받으면 이를 처리한다. 예제는 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 public ab.. 2022. 3. 26.
상태 패턴(State Pattern) 객체가 상태에 따라 다른 행위를 할 때, 객체가 자신의 상태를 체크하지 않고 상태를 객체로 만들어 상태 객체가 해당 행위를 가지고 있는 것 패턴이다. 상태 패턴의 예시는 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 public interface State { public void doAction(Context context); } public class StartState implemetns State { private static StartState star.. 2022. 3. 26.
두 번째 미션 - 로또 미션 회고 1차 미션 - 자동 로또 로또 구입 금액을 입력하면 구입 금액에 해당하는 로또를 발급해야 한다. 로또 1장의 가격은 1000원이다. 실행 결과: 2차 미션 - 수동 로또 현재 로또 생성기는 자동 생성 기능만 제공한다. 사용자가 수동으로 추첨 번호를 입력할 수 있도록 해야 한다. 입력한 금액, 자동 생성 숫자, 수동 생성 번호를 입력하도록 해야 한다. 실행 결과: 로또 미션을 진행하면서 primitive type에 대한 포장을 처음 해보았다. 값을 포장하더라도 컬렉션의 연산이 올바르게 진행됨을 보장하기 위해 equals와 hashCode 역시 처음으로 override 해보았고 올바른 override를 위해 이펙티브 자바 item10, 11을 읽었다. DTO역시 처음 사용해봤다. 리뷰어 한테 MVC에 대해 .. 2022. 3. 11.
추상 팩토리 패턴(abstract factory pattern) 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공한다. 추상 팩토리 패턴은 서로 관련되 있는 객체들을 묶어서 팩토리 클래스로 만들고, 이들의 팩토리를 조건에 따라 생성하게 다시 팩토리를 만들어 객체를 생성한다. 전반적인 패턴의 구조는 다음과 같다. 위 그림에서 각 클래스는 다음과 같은 역할을 한다. 1. AbstractFactory: 실제 팩토리 클래스의 공통 인터페이스 2. ConcreteFactory: 구체적인 팩토리 클래스로 AbstractFactory 클래스의 추상 메서드를 오버라이드해서 구체적인 제 품을 생성한다. 3. AbstractProduct: 제품의 공통 인터페이스 4. ConcreteProduct: 구체적인 팩토리 클래스에서 생성되는 구체.. 2022. 1. 5.
728x90