- 객체 결합, 서로 독립적으로 개발한 인스턴스를 하나인 것처럼 사용하게 해주는 패턴
1. 종류
1.1. Decorator
- 하나의 객체에 추가적인 책임을 부여하는 추가, 서브클래스를 만드는 것을 통해 기능을 유연하게 확장한다고 함

- 유연하게 기능을 추가하기엔 좋지만, 초기화 코드의 복잡성이 올라가고, 이해하기 힘들 수 있음
1.2. Revealing
- 함수를 통해 private, public 같은 접근 제어를 만드는 패턴
- Javascript가 따로 접근 제어자가 없어서 별도로 구현을 할 수 있으며, 이를 기반으로 만들어진 CommonJS라는 모듈이 있기도 하다
const testFunc = (() => {
const a = 1
const b = {
v: 2
}
return b
})
console.log(testFunc) // { v: 2 }
console.log(testFunc.a) // undefined