SeSac (2021-08 ~ 2021-12)/Node

디자인패턴

배워도끝이없네 2021. 12. 7. 21:24

디자인패턴을 말하는이유는?

- 커뮤니케이션에 유용하다 (~패턴으로 짜면 됩니다)

- 저년차의 개발자도 고년차처럼 개발할 수 있다.

- 코드를 읽을 때도 좋아진다.

 

디자인패턴을 잘하자!

디자인패턴과 리팩토링을 잘하면 굉장히 좋은 개발자이다.

 

리팩토링은 마틴파울러의 리팩토링이 좋다(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