반응형 디자인 패턴7 전략 패턴(Strategy Pattern) 전략 패턴은 실행(런타임) 중에 알고리즘 전략을 선택하여 객체 동작을 실시간으로 바뀌도록 할 수 있게 하는 행위 디자인 패턴 이다. 여기서 '전략'이란 일종의 알고리즘이 될 수 도 있으며, 기능이나 동작이 될 수도 있는 특정한 목표를 수행하기 위한 행동 계획을 말한다. 즉, 어떤 일을 수행하는 알고리즘이 여러가지 일때, 동작들을 미리 전략으로 정의함으로써 손쉽게 전략을 교체할 수 있는, 알고리즘 변형이 빈번하게 필요한 경우에 적합한 패턴이다. Strategy 패턴은 어떤 기능에 대한 특정 알고리즘을 느슨하게 결합시켜주는 패턴입니다. 어떤 알고리즘이 느슨하게 결합되면 추후 더 나은 알고리즘으로 쉽게 변경할 수 있을 뿐만 아니라 프로그램이 실행 중에 상황에 맞는 알고리즘으로 쉽게 변경할 수 있습니다. 또한 .. 2023. 10. 3. 파사드 패턴(Facade Pattern) 어떤 기능을 처리하기 위해 여러 객체들 사이의 복잡한 매서드 사용을 감춰서 단순화 시켜주는 패턴 예시)어떤 데이터를 조회해서 출력해주는 기능 Facade 패턴은 어떤 기능 개발을 위해 필요한 많은 클래스와 관련 API 호출 등 복잡한 내용을 단순환 시켜주는 패턴입니다 즉,Facade에 해당하는 클래스 하나로 단순화 시키고 기존의 캘래스들은 감출 수 있습니다.(비공개 처리가 가능) Facade 패턴을 적용하여 만들어진 라이브러리를 사용하는 개별자의 입장에서 학습에 대한 부담이 많이 줄게 됩니다. class Amplifier { public turnOn(): void { console.log("Amplifier is turned On"); } public setVolume(level: number): voi.. 2023. 10. 3. 팩토리 패턴(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. 프로토타입 패턴(Prototype Pattern) 프로토타입 패턴 : 기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법. 기존의 객체를 응용하여 새로운 객체를 만들 때 사용한다. 특히 기존의 인스턴스를 만들 때 시간이 오래걸리는 작업. 가령 데이터 베이스에서 데이터를 읽어와서 인스턴스를 생성한다던가 http 요청을 보내서 가져온 데이터로 인스턴스를 만들어야 하는 경우는 상대적으로 오랜시간과 큰 리소스가 필요한 작업이다. 이 때 DB나 http통신으로 가져온 데이터를 복제를 해서 새로운 인스턴스를 만들고 원하는 값만 일부 변경하여 사용한다. interface ShapeProperties { color: string; x: number; y: number; } abstract class Shape { constructor(public propertie.. 2023. 10. 2. 이전 1 다음 반응형