1-1-4 옵저버 패턴 Observer Pattern & 1-1-5 프록시 패턴과 프록시 서버에 대해 👈
예를 들어 객체들을 배열, 스택, 해시테이블 등의 컬렉션에 넣어서 보관할 수 있다. 그런데 클라이언트가 해당 객체들에게 일일이 접근하는 작업을 원할 수 있다.
이런 경우, 사용하는 것이 반복자(이터레이터) 패턴이다
반복자(이터레이터) 패턴이란?
*Iterator : 반복하다 , 반복자
객체를 저장하는 방식은 보여주지 않으면서도 클라이언트가 객체들에게 일일이 접근할 수 있게 해주는 방법
반복이라는 특징을 계속 볼 수 있는데, 반복자(Iterator)를 만들어 이터레이터 패턴을 사용해서 컬렉션 객체 안에 들어있는 모든 항목에 접근하는 방식을 통일할 수 있는 것이다.
접근 방식을 통일하게되면 어떤 종류의 집합체에 대해서도 사용할 수 있는 다형적인 코드를 만들 수 있다. 또한 모든 항목에 일일이 접근하는 작업을 컬렉션 객체가 아닌 반복자 객체에서 맡게 된다는 점이다. 이를 통해 집합체의 인터페이스 및 구현이 간단해질 뿐만 아니라, 집합체에서는 자신의 객체 컬렉션 관리에만 전념할 수 있게 된다.
자바스크립트의 주요 문제점 하나는 네임스페이스가 없다는 것이다.
전역 범위에서 실행되는 프로그램은 내부 어플리케이션과 종속된 라이브러리 코드의 데이터들로 인해 충돌이 발생 할 수 있기 때문에 이 문제를 해결 하기 위한 보편전 방법이 노출식 모듈 패턴이다.
노출 모듈 패턴이란?
즉시 실행 함수를 통해 private, public 같은 접근 제어자를 만드는 패턴
자바스크립트는 접근 제어자가 존재하지 않고 전역 범위에서 스크립트가 실행되기 때문에 노출모듈 패턴을 통해 private와 public 접근 제어자를 구현한다.
const pukuba = (() => {
const a = 1
const b = () => 2
const public = {
c: 2,
d: () => 3
}
return public
})()
console.log(pukuba) // { c: 2, d: [Function: d] }
console.log(pukuba.a) // undefined
a와 b
는 다른 모듈에서 사용할 수 있는 변수나 함수인 private 범위를 가지고 다른 모듈에서 접근할 수 없고, c와 d
는 다른 모듈에서 사용할 수 있는 변수나 함수인 public 범위를 가진다.
📍 출처
주홍철, [면접을 위한 CS 전공지식 노트]
[Design pattern] 많이 쓰는 14가지 핵심 GoF 디자인 패턴의 종류
https://github.com/haruair/note/issues/12
📍 참고하면 좋을 사이트