반응형 개발공부 일지/면접17 팩토리 패턴(Factory Pattern) 생성 패턴은 인스턴스를 만드는 절차를 추상화하는 패턴입니다. 팩토리 패턴은 객체를 생성하는 인터페이스는 미리 정의하되, 인스턴스를 만들 클래스의 결정은 서브 클래스 쪽에서 내리는 패턴입니다. 팩토리 패턴에서는 클래스의 인스턴스를 만드는 시점을 서브 클래스로 미룹니다. 이 패턴은 인스턴스화에 대한 책임을 객체를 사용하는 클라이언트에서 팩토리 클래스로 가져옵니다. abstract class PaymentProcessor { constructor(public amount: number) {} abstract processPayment(): void; } class PaypalProcessor extends PaymentProcessor { public processPayment(): void { console.. 2023. 10. 3. 추상 팩토리 패턴 ( Abstract Factory Pattern ) Abstract Facotry는 추상적인 것들을 미리 정해두고 만드는 공장의 의미함 먼저 만들어야할 컴포넌트들을 추상적으로 정하고 구체적인 조건이 주어지면 조건에 맞는 구체적인 컴포넌트들을 정해 생성하는 패턴 구체적인 컴포넌트들을 생성해 조립해서 하나의 시스템을 만드는 패턴 interface Button { render(): void; onClick(f: Function): void; } interface Checkbox { render(): void; toggle(): void; } interface GUIFactory { createButton(): Button; createCheckbox(button: Button): Checkbox; } class WindowsButton implements Bu.. 2023. 10. 3. 프록시 패턴(Proxy Pattern) 프록시 패턴(Proxy Pattern)이란? 프록시는 대리인이라는 뜻으로, 무엇인가를 대신 처리하는 의미이다. 일종의 비서라고 생각하면 된다.사장실에 바로 들어가서 사장님을 바로 만나는게 아닌 비서를 통해 사장님을 만나는 개념이라고 생각할 수 있겠다. 어떤 객체를 사용하고자 할 때, 객체를 직접 참조하는 것이 아니라 해당 객체를 대행(대리, proxy)하는 객체를 통해 대상 객체에 접근하는 방식을 사용하면 해당 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있고, 실제 객체의 기능이 반드시 필요한 시점까지 객체의 생성을 미룰 수 있다. 프록시 패턴(Proxy Pattern)을 사용하는 이유가 뭘까? 객체지향 5원칙 중 하나인 OCP를 지킬 수 있다. 객체지향 5원칙 중 하나인 SR.. 2023. 10. 3. 빌더 패턴(Builder Pattern) 빌더 패턴(Builder Pattern) GoF 디자인 패턴 중 생성 패턴에 해당한다. 빌더 패턴은 복잡한 객체를 생성하는 클래스와 표현하는 클래스를 분리하여, 동일한 절차에서도 서로 다른 표현을 생성하는 방법을 제공한다. 별도의 Builder 클래스를 만들어 필수 값에 대해서는 생성자를 통해, 선택적인 값들에 대해서는 메소드를 통해 step-by-step으로 값을 입력받은 후에 build() 메소드를 통해 최종적으로 하나의 인스턴스를 return하는 방식이다. 사용법 객체의 생성 알고리즘이 조립 방법에 독립적일 때 합성할 객체들의 표현이 서로 다르더라도 생성 절차에서 표현 과정을 지원해야할 때 구조 Builder 객체를 생성하는데 사용되는 인터페이스이다. ConcreteBuilder Builder를 실.. 2023. 10. 2. CORS는 무엇이고, CORS 에러를 방지하려면 어떻게 해야하나요? Cross Origin Resource Sharing의 줄임말로, 서버가 웹 브라우저에서 리소스를 로드할 때, 다른 오리진을 통해 로드하지 못하게 하는 HTTP 헤더 기반 메커니즘입니다. 출처가 다르다는 것은 도메인, 하위도메인, 포트, 프로토콜이 다르다는 것을 의미하는데, CORS에 의해 요청이 차단되지 않으려면 이 네 가지가 모두 동일해야합니다. *오리진: 프로토콜 + 호스트 이름 + 포트의 조합 ex) https://www.naver.com:12010 또는 프론트엔드에서는 프록시 서버를 만들어 동일한 출처로 만드는 방법도 있습니다. 백엔드에는 express의 cors 미들웨어 라이브러리를 사용하거나, 응답 헤더에 Access-Control-Allow-Origin에 허용하고자 하는 도메인을 세팅하는 .. 2023. 10. 2. 프로토타입 패턴(Prototype Pattern) 프로토타입 패턴 : 기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법. 기존의 객체를 응용하여 새로운 객체를 만들 때 사용한다. 특히 기존의 인스턴스를 만들 때 시간이 오래걸리는 작업. 가령 데이터 베이스에서 데이터를 읽어와서 인스턴스를 생성한다던가 http 요청을 보내서 가져온 데이터로 인스턴스를 만들어야 하는 경우는 상대적으로 오랜시간과 큰 리소스가 필요한 작업이다. 이 때 DB나 http통신으로 가져온 데이터를 복제를 해서 새로운 인스턴스를 만들고 원하는 값만 일부 변경하여 사용한다. interface ShapeProperties { color: string; x: number; y: number; } abstract class Shape { constructor(public propertie.. 2023. 10. 2. 싱글톤 패턴(Singleton Pattern) 1. 싱글톤 패턴(Singleton pattern) 정리 싱글톤 패턴이란? 인스턴스를 단 1개만 만드는 패턴이다. 어플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(static) 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴이다. 예를들어 레지스트리 같은 설정 파일의 경우 객체가 여러개 생성되면 설정 값이 변경될 위험이 생길 수 있다. 인스턴스가 1개만 생성되는 특징을 가진 싱글턴 패턴을 이용하면, 하나의 인스턴스를 메모리에 등록해서 여러 쓰레드가 동시에 해당 인스턴스를 공유하여 사용할 수 있게끔 할 수 있기 때문에 요청이 많은 곳에서 사용하면 효율을 높일 수 있다. 주의해야 할 점은 싱글턴을 만들 때 동시성(Concurrency) 문제를 고려해서 설계해야 한다. 싱글톤 패턴의 .. 2023. 10. 1. SOLID 원칙 SOLID 원칙 SOLID 원칙이란 로버트 마틴이 소개한 객체 지향 프로그래밍 및 설계의 5가지 기본 원칙을 말하며, 5가지의 원칙의 앞 글자를 따서 “SOLID”라고 부른다. SRP (Single Responsibility Principle) : 단일 책임 원칙 OCP (Open/Closed Principle) : 개방/폐쇄 원칙 LSP (Liskov Substitution Principle) : 리스코프 치환 원칙 ISP (Interface Segregation Principle) : 인터페이스 분리 원칙 DIP (Dependacny Inversion Principle) : 의존관계 역전 원칙 📒 SRP (Single Responsibility Principle) 단일 책임 원칙 어떤 클래스던지 단 .. 2023. 10. 1. 이전 1 2 다음 반응형