책임연쇄 패턴(Chain of Responsibility)
디자인패턴 공부하기
  • JavaScript

책임연쇄 패턴(Chain of Responsibility)

어떠한 요청이 발생하였을 때 그 요구를 처리할 Objeft가 없는 경우, 다수의 Object를 체인형태로 묶어 차례로 요청에 대한 올바른 Object를 결정

(본인 Object가 처리할 수 없을 때 체인으로 묶여있는 다른 Object에게 책임을 넘기는 패턴)

예제로 살펴보기

어떠한 숫자 n을 입력받아 홀수인지 짝수인지 구별하는 코드를 작성해보자.

패턴을 사용하지 않은 예제

const isOdd = n => {
    if (n % 2 === 1) {
        return true;
    }
};

const isEven = n => {
    if (n % 2 === 0) {
        return true;
    }
};

const checkNumber = 7;
if (isOdd(checkNumber)) {
    console.log('홀수');
} else {
    if (isEvent(checkNumber)) {
        console.log('짝수');
    } else {
        console.log('What!! Err!!');
    }
}

이와같은 코드가 될것이다.

다음은 책임연쇄 패턴을 사용하여 구현해보자.

const isOdd = n => {
    if (n % 2 === 1) {
        return '홀수';
    }
};

const isEven = n => {
    if (n % 2 === 0) {
        return '짝수';
    }
};

const checkNumber = 7;
const checkFunc = [isOdd, isEven];

for (const func of checkFunc) {
    const result = func(checkNumber);
    if (result) {
        console.log(result);
        break;
    }
}