티스토리 뷰
행동Behavioral 패턴
행동 패턴은 객체간의 통신을 식별하는데 사용됩니다.
대표적인 예로는 Observer, Mediator, State 등이 있습니다
1) 옵저버 Observer
옵저버 패턴은 상태 변경이 발생할 때 이것을 관찰하고 있는 이해 당사자에게 알리는 데 사용됩니다.
import { Subject } from 'rxjs';
const news = new Subject();
const tv1 = news.subscribe(v => console.log(v + 'via Den TV'));
const tv2 = news.subscribe(v => console.log(v + 'via Batcave TV'));
const tv3 = news.subscribe(v => console.log(v + 'via Airport TV'));
news.next('Breaking news: ');
news.next('The war is over ');
tv1.unsubscribe();
2) 중재인 Mediator
중재인은 객체간의 커뮤니케이션에 미들웨어 계층을 제공한다. (이 패턴은 Express Middleware에서 사용되는 패턴이다. )
import express from 'express';
const app = express();
// Middleware logic
function mediator(req, res, next) {
console.log('Request Type:', req.method)
next()
}
app.use(mediator);
// Mediator runs before each route handler
app.get('/', (req, res) => {
res.send('Hello World');
});
app.get('/about', (req, res) => {
res.send('About');
});
3) 상태 State
상태 패턴은 객체의 상태를 캡슐화하는데 사용됩니다. 이를 통해 상태를 객체로 관리할 수 있습니다.
interface State {
think(): string;
}
class HappyState implements State {
think() {
return 'I am happy 🙂';
}
}
class SadState implements State {
think() {
return 'I am sad 🙁';
}
}
class Human {
state: State;
constructor() {
this.state = new HappyState();
}
changeState(state) {
this.state = state;
}
think() {
return this.state.think();
}
}
const human = new Human();
console.log(human.think());
human.changeState(new SadState());
console.log(human.think());
'기타' 카테고리의 다른 글
JWT (0) | 2022.11.20 |
---|---|
구조 - 디자인패턴 (0) | 2022.11.13 |
생성 - 디자인 패턴 (0) | 2022.11.12 |