Skip to main content

Strategy Pattern을 가장 간단하게 구현할 수 있는 언어 (Javascript)


Strategy Pattern을 사용해서 문제를 해결!

자바스크립트는 OOP, Functional 모든 특성을 다 가지고 있다.
괜히 "자바스크립트가 왕” 이라는 말이 나오는게 아니었다.

Node.js + MongoDB 에는 Mongoose 모듈을 사용한다.
Mongoose로 객체를 만들면 Hash Key 역할을 하는  "_id" 가 생긴다.
var user = new User();
console.log(user);
를 찍으면 _id가 들어가 있다.

우리가 하는 짓을 Mongoose 만든 사람이 보면 화가 나거나, 슬퍼하거나, 이해를 못하거나, 무관심 하겠지만.
우리는 코드의 구조를 최대한 이쁘게 하기 위해 Mongoose에서 원하지 않는 방향으로 Model을 한번 만들어봤다.

Content, Free-Coin, Offer, Saies 라는 모델이 있었다.
이 모델들을 Content 모델로 통합을 하고, 나머지 세 모델들은 개념상 모델로만 지칭할 뿐 실제로는 Content를 사용하여 save, update, find를 한다.

* 개요 
 - 개념모델: Content, Free-Coin, Offer, Saies 
 - 물리모델: Content만 존재


때문에 Factory pattern을 써야 했다.
createMarketContent() 라는 함수를 만들고, 이 안에 각 모델을 받도록 Strategy pattern을 사용했다.

var freeCoin = createMarketContent(obj, FreeCoin);
var offer = createMarketContent(obj, Offer);
var sale = createMarketContent(obj, Sale);

그리고 createMarketContent() 의 내부구조는 다음과 같았다.

function createMarketContent(obj, marketContent) {
    var content = new Content(new marketContent(obj));
    ….
   return content;
}

Javascript를 사용하여 functional 하게 프로그래밍을 할 수 있다. 너무나 강력했다.

여기서 또다른 생각을 해봤다.

Language가 강력하다는 것은 무엇일까?
1. 간단하다.
2. 원하는 대로 구현이 가능하다.
3. 자유도가 높다.
4. 개발 철학이 스며들어 있다.

Java 로 Strategy Pattern을 구현하려면 interface 를 선언해야 한다.
Javascript로 구현을 하면, 아무런 interface도 없다. 그냥 사용하면 된다. 오직 파라미터 개수만 같으면 무조건 돌아간다.

Comments