본문 바로가기
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.
추상 팩토리 패턴(abstract factory pattern) 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공한다. 추상 팩토리 패턴은 서로 관련되 있는 객체들을 묶어서 팩토리 클래스로 만들고, 이들의 팩토리를 조건에 따라 생성하게 다시 팩토리를 만들어 객체를 생성한다. 전반적인 패턴의 구조는 다음과 같다. 위 그림에서 각 클래스는 다음과 같은 역할을 한다. 1. AbstractFactory: 실제 팩토리 클래스의 공통 인터페이스 2. ConcreteFactory: 구체적인 팩토리 클래스로 AbstractFactory 클래스의 추상 메서드를 오버라이드해서 구체적인 제 품을 생성한다. 3. AbstractProduct: 제품의 공통 인터페이스 4. ConcreteProduct: 구체적인 팩토리 클래스에서 생성되는 구체.. 2022. 1. 5.
템플릿 메소드 패턴(Template method pattern) 템플릿 메소드 패턴은 알고리즘의 구조를 메서드에 정의하고, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴이다. 알고리즘이 단계별로 나누어 지거나, 같은 역할을 하는 메서드이지만 여러곳에서 다른 형태로 사용이 필요한 경우 유용하다. 장점 1. 코드 중복을 줄일 수 있다. 2. 자식 클래스의 역할을 줄여 핵심 로직 관리가 용이하다. 단점 1. 추상 메서드가 많아지면 클래스 관리가 복잡해 진다. 2. 클래스 간의 관계와 코드가 꼬일 수 있다. 예제 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 abstract cla.. 2022. 1. 4.
728x90