반응형
반응형
❓프록시 패턴? 프록시(proxy)는 대리인, 대리자라는 뜻으로, 다른 객체의 접근 제어를 위한 구조 디자인 패턴입니다. 객체가 전달되는 중간 단계에 대리자를 위치시켜 무언가를 수행할 수 있도록 합니다. 하나의 객체를 두 개로 나눠 재구성하여, 실체 객체를 가로챌 수 있습니다. 여기서 특징은, 두 개로 나뉜 두 객체의 인터페이스는 같다는 것입니다. ❗프록시 패턴의 예시 (JS) // 실체 객체 class RealObject { performAction() { console.log("실체 객체 작동"); } } // 프록시 객체 class ProxyObject { constructor(realObject) { this.realObject = realObject; } performAction() { cons..
❓파사드 패턴? 파사드 패턴이란, 복잡한 시스템, 서브 시스템을 단순한 인터페이스로 감싸, 클라이언트가 해당 시스템을 쉽게 사용할 수 있게 해주는 것을 말합니다. ‘싱글턴 추상 팩토리’ 라고 불리기도 합니다. 객체지향 개발 방식에서는 하나의 모듈을 작은 단위로 분리하고, 클래스로 캡슐화하며, 작게 분리된 모듈은 다른 기능 구현에도 재사용됩니다. 이 과정에서 수많은 클래스가 생성되고 객체는 복잡한 관계를 가지게 되는데요, 파사드 패턴을 이용해 이 복합한 객체 연결 구조 사이에 인터페이스를 두어서 시스템간 의존성 관리를 할 수 있고, 이는 느슨한 결합을 유지시켜줍니다. 파사드로 인해 새로운 계층이 추가되어, 객체 사이의 결합도를 낮추어 유연한 구조를 가질 수 있습니다. 특히 파사드 패턴은, 클라우드, 서비스..
❓빌더 패턴이 무엇일까? 빌더 패턴은 복합 객체 생성 과정을 별도의 독립된 클래스로 관리하는 패턴을 말합니다. 쉽게 말해 build라는 클래스 하나로 생성을 모두 관리할 수 있다는 건데요. 그렇다면 복합 객체, 복잡한 객체란 무엇을 뜻하는 것일까요? ❓복합 객체? 복합 객체는 내부적으로 다른 클래스의 객체를 포함하고 있는 것을 말합니다. // Door 클래스 정의 class Door { operate(action) { console.log(`The door is ${action}.`); } } // Car 클래스 정의 class Car { constructor(model, year) { this.model = model; this.year = year; this.doors = []; } addDoor(c..
❓팩토리 메서드 패턴? 팩토리 메서드 패턴은 팩토리 패턴에서 확장된 패턴이라 생각하시면 됩니다. 기존 팩토리 패턴은 객체의 생성을 처리하는 동작을 클래스 혹은 메서드로 분리하는 것을 말하는데요, 여기서 한 발 더 나아가 팩토리 메서드 패턴은 ‘서브 클래스’ 에서 구현하는 패턴을 말합니다. 팩토리 패턴은 여기서 자세하게 보실 수 있습니다! [디자인 패턴] 팩토리(Factory) 패턴 ❓팩토리 패턴 팩토리 패턴은 생성 패턴중에서도 가장 기본이 되는 패턴이라고 합니다. 객체 생성 처리를 위임하여 객체 지향의 문제점을 해결할 수 있다고 하네요. 객체 생성을 담당하는 동작 lurgi.tistory.com ❗팩토리 메서드의 예시 (JS) // 추상 동물 클래스 (인터페이스로 간주) class Animal { mak..