티스토리 뷰

기타

행동 - 디자인 패턴

세이브 2022. 11. 13. 16:59

행동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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
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
글 보관함