디자인패턴을 말하는이유는?
- 커뮤니케이션에 유용하다 (~패턴으로 짜면 됩니다)
- 저년차의 개발자도 고년차처럼 개발할 수 있다.
- 코드를 읽을 때도 좋아진다.
디자인패턴을 잘하자!
디자인패턴과 리팩토링을 잘하면 굉장히 좋은 개발자이다.
리팩토링은 마틴파울러의 리팩토링이 좋다(1판이 훨씬 잘쓰여있다. 자바가 부담스러우면 2판을 사서 보면 된다.)
디자인패턴은 C++에서 나왔다. 그래서 펑셔널 랭귀지랑 잘 맞지는 않는다.
프록시패턴은 중급패턴이다. 델리게이트 패턴 스테틱 패턴... 등등 어려운 패턴이지만 공부하다보면 고수가 되어있따.
queue는 무조건 순차적으로 일어나고 size가 고정적일때는 queue를쓴다. 그이외에는 stack을 많이 쓴다.
<Factory pattern>
- 리액트의 useReducer가 factory pattern을 사용한다.
- useReducer(reducer, payload) (reducer는 switch문으로 되어있다)
<Builder Pattern>
-
const client = new HttpClientBuild()
.setUrl(asd)
.setPut(sdf)
.build();
setPort(put){
this.port = port;
return this; //인스턴스를 반환해야 build패턴이 가능하다.
}
build(){
return new HttpClient(this.port, this.url ...)
}
----------------------
constructor(){
this.httpClient = new Http..(); //인스턴스가 조작될 가능성이 없으면 미리 인스턴스를 생성해두어도 된다
}
- 빌더패턴은 필요한것만 세팅해서 사용할수 있어서 편리하다. (생성자에 인자를 모두 주지 않아도 되니)
<Revealing Pattern> --> 함수형 언어에서 많이쓴다, 자바에선 잘안씀
- Revealing이란 일부만 노출시키는것이다.
- 구조적언어에서는 은닉성이 명확하기 때문에 사용하지 않아도 비슷하게 할수 있다. (protected.. )
-
//공개 생성자 패턴 (Revealing Construcotr Pattern)
const user = new User(x,(role)=>{...})
class User{
constructor(x, cb){
this...
cb(this.role);
}
}
new Promise((resolve, reject)=>{})가 이 패턴을 사용한다.
내부에있는 로직을 숨기고 공개할 정보만 resolve, reject로 보여주는것이다.
<Command Pattern>
- 커맨드패턴과 팩토리 패턴은 굉장이 유사해 커맨드팩토리패턴이라고 말하기도 한다.
- 커맨드패턴은 명령이 중요하다.
- 커맨드들은 같은 인터페이스 타입을 갖는다.
- 펑셔널랭귀지에서는 Command라는 인터페이스를 함수로서 만든다
const Command = (exec, value) => exec(result, val);
Command(add,4)
<Singleton pattern>
- 메모리효율을 올릴 수 있다.
- 노드는 똑같은 모듈들은 다 캐쉬해둔다. 그래서 export하면 싱글턴이된다.
--->프록시에서 계속..
'SeSac (2021-08 ~ 2021-12) > Node' 카테고리의 다른 글
디자인패턴 2 (0) | 2021.12.11 |
---|---|
Node.js 비동기, callback 심화 (0) | 2021.12.04 |
node 비동기 (0) | 2021.11.30 |
개요 (deno와 node의 차이) (0) | 2021.11.30 |