Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[이상조] 챕터 7: 자바스크립트 디자인 패턴 (1/3) #50

Merged
merged 1 commit into from
Nov 2, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions 챕터_7/이상조.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# 자바스크립트 디자인 패턴

## 생성 패턴

- 생성자 패턴
- 모듈 패턴
- 노출 모듈 패턴
- 싱글톤 패턴
- 프로토타입 패턴
- 팩토리 패턴

## 생성자 패턴

생성자를 통해 동일한 객체를 찍어낸다.
똑같은 매서드 계속 새로 정의하지 말고 프로토타입을 써라.

## 모듈 패턴

- 객체 리터럴: 예시에 왜 캡슐화라고 적혀있을까...?
```js
const module = {
value: 'value',

publicMethod() {
console.log(this.value);
}
}

module.value = 'new value'; // module 객체는 프로퍼티를 비공개하는게 불가능하지 않나?
```

- 모듈 패턴: 모듈 내에 export하지 않는 변수 하나 만들고 클로저를 사용한 캡슐화
- 믹스인 가져오기 변형: 외부 모듈(믹스인)을 사용하는 방법...?

단점 중 나중에 추가한 메서드에서는 비공개 멤버에 접근할 수 없다는건 실제 코드의 수정이 아니라 객체에 새로운 메서드를 추가할 때를 말하는 거겠지?

## 노출 모듈 패턴

걍 파일 내에서 내보내고 싶은 녀석만 객체로 묶어서 보낸다.

## 싱글톤 패턴

클래스의 인스턴스가 딱 하나만 존재하도록 하는 패턴

- 싱글톤임을 파악하기 힘들다.
- 테스트하기 힘들다.
- 신중한 조정이 필요하다? 그러니까 인스턴스 만들어지고 나서 참조할 수 있도록 순서를 잘...?

메모리 절약도 도움이 되려나...

## 프로토타입 패턴

이건 이해가 잘 안가네... 마지막 예제 코드는 뭘 말하고 싶은걸까?

## 팩토리 패턴

원하는 인스턴스 유형을 찍어내는 공장같은 클래스
생성을 쉽고 편하게 해줄 수 있다. 근데 클래스 말고 걍 함수로 만들어도 되는거 아닌가; instanceof로 타입체크가 편해서 그런가?
한 군데서 만들기 때문에 유지보수성이 좋다.


Loading