본문 바로가기

Javascript27

Proxy Pattern - 구조적 설계 패턴 프록시 (Proxy, Surrogate) "다른 객체에 대한 액세스를 제어" Subject라 하는 다른 객체에 대한 액세스를 제어하는 객체 (subject == original) 프록시와 subejct 는 동일한 인터페이스를 가지며 이를 통해 투명하게 하나를 다른것으로 바꿀 수 있음 실행 되는 작업의 전부 또는 일부를 가로채 해당 동작을 증강하거나 보완 프록시는 각 작업을 subject에 전달하여 추가적인 전/후 처리로 동작을 향상 * 클래스간의 프록시 아님, 대상의 실제 인스턴스를 감싸 내부 상태를 보존 유용한 상황 데이터 검증 : 입력의 유효성 검사 보안 : 클라이언트 권한 확인 캐싱 : 프록시로 내부에 캐시 유지 느린 초기화 : Subject 생성에 많은 비용이 들 경우 필요 시점까지 초기화 지연 .. 2022. 2. 6.
Wiring Pattern - 생성자 디자인 패턴 모듈 와이어링 (Wiring) 모든 어플리케이션은 여러 컴포넌트를 연결한 결과임 연결 방식은 프로젝트의 유지보수 및 성공에 중요함 컴포넌트 A가 주어진 기능을 수행하기 위해 컴포넌트 B가 필요. = A는 B에 종속적이다. = B는 A의 종속성 싱글톤 패턴과 종속성 주입 패턴을 사용하는 서로 다른 두 가지 접근방법을 사용해 종속성 모델링 하는 방법을 봅시다. 1. 싱글톤 종속성 두 모듈을 서로 연결하는 간단한 방법으로 모듈 시스템을 활용 종속성들을 묶는 방식은 사실상 싱글톤 Ex) DB 연결을 위한 싱글톤 인스턴스, 간단한 블로깅 어플 구현 // db.js import { dirname, join } from 'path'; import { fileURLToPath } from 'url'; import sq.. 2022. 2. 3.
Singleton Pattern - 생성자 디자인 패턴 싱글톤(Singleton) "인스턴스가 하나만 존재하도록 접근을 중앙 집중화" 객체지향에서 가장 많이 사용 Node 에서 논의할 가치가 없지만 알아두면 좋음 Node개발자가 알아둬야 할 몇가지 주의사항과 제약사항 존재 상태 정보의 공유 리소스 사용의 최적화 리소스에 대한 접근 동기화 Ex) 데이터 베이스에 대한 접근을 제공하는 일반적인 DB 클래스 // Database.js export class Databse { constructor (dbName, connectionDetails) { // ... } // ... } 전형적인 구현은 일반적으로 연결풀 (connection pool)을 유지함 => 각 요청에 대해 새로운 DB 인스턴스를 만들 필요 없음 DB 인스턴스는 대기중인 트랜잭션 목록 같은 일부 .. 2022. 2. 3.
Domenic Revealing Constructor Pattern - 생성자 디자인 패턴 공개 생성자? (Domenic Revealing Constructor Pattern) 일반적인 디자인 패턴 아님, JS 독자적임 https://blog.domenic.me/the-revealing-constructor-pattern/ The Revealing Constructor Pattern I want to document an interesting pattern we’ve seen emerge in some recent web platform specs, including promises and streams. I’m calling it the revealing constructor pattern. The Promises Example Let’s take the case of promis... bl.. 2022. 2. 3.
Builder Pattern - 생성자 디자인 패턴 빌더 "유창한 인터페이스를 제공, 복잡한 객체의 생성을 단순화" 단계별로 객체를 만들 수 있음 => 가독성, 일반적인 개발자 사용성 향상 가장 좋은 상황 : 인자의 목록이 길거나, 많은 복잡한 매개 변수를 입력해서 사용하는 생성자가 있는 클래스 class Boat { constructor ( hasMotor, motorCount, mototBrand, motorModel, hasSails, sailsCount, sailsMaterial, sailsColor, ... ) } const myBoat = new Boat(ture, 2, 'Best Motor Co.', 'OM123', true, 1, 'fabric', 'white', 'blue', false); 어쩔거야 이거, 맨날 칠거니? 오류가 발생하기 쉽.. 2022. 2. 3.
Factory Pattern - 생성자 디자인 패턴 팩토리 "특정 구현으로부터 객체의 생성을 분리" 가장 일반적인 디자인 패턴 팩토리는 함수일 뿐이라서 사용자에게 더 적은 유연성을 제공 (사용자 관점) 팩토리는 클로저를 활용하여 캡슐화를 강제하는데 사용 할 수 있음 1 객체 생성과 구현의 분리 JS는 단순성, 유용성, 작은 노출을 선호 => 함수형 방식 선호 객체 인스턴스 생성 시 실제로 new 연산자 / Object.create() 대신 팩토리 호출이 편하고 유연함 객체 생성과 구현을 분리 새 인스턴스의 생성을 감싸서 객체 생성시 더 많은 유연성과 제어를 제공 (프로그램 관점) 특정 조건에 따라 다른 유형의 객체를 반환할 수있음 클래스를 숨겨 확장이나 수정하는것을 막음 // 특정 유형의 객체에 바인딩 function createImage (name) {.. 2022. 2. 3.