어떠한 요청이 발생하였을 때 그 요구를 처리할 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;
}
}