오늘 학습한 내용을 간단히 정리해 볼까 한다. 사용된 예제코드의 출처는 (면접을 위한 CS 전공지식 노트 by 주홍철) 책으로, 면접 뿐 아니라 CS 전반적인 지식을 학습하기에 아주 좋은 책이라 생각한다.
싱글톤 패턴
개요: 하나의 클래스당 하나의 인스턴스를 생성하는 디자인 패턴
특징: 인스턴스를 하나만 생성해도 되기 때문에 리소스를 적게 먹는다, 하나의 인스턴스에 대해 의존성이 커진다.
(의존성: A가 B에 의존성이 있다 -> B의 변경 사항에 대해 A 또한 변경되어야 하는 부분이 있다)
예제 코드
class Singleton {
constructor() {
if (!Singleton.instance) {
Singleton.instance = this
}
return Singleton.instance
}
getInstance() {
return this.instance
}
}
const a = new Singleton()
const b = new Singleton()
console.log(a === b) // a와 b는 동일한 인스턴스를 지니므로 비교시 동일함을 리턴함
팩토리 패턴
개요: 상하관계가 있는 두 개의 클래스에 대해 상위 클래스에선 전체 그림을, 하위 클래스에선 세부적인 내용을 지정해주는 디자인 패턴
특징: 상위-하위 클래스의 분리로 인한 유연성 증가, 객체 생성 로직의 분리로 인한 유지보수성 증가
예제 코드
class Latte {
constructor() {
this.name = 'latte'
}
}
class Espresso {
constructor() {
this.name = 'espresso'
}
}
class LatteFactory {
static createCoffee() { // static 메소드는 정적 메소드로, 인스턴스를 생성하지 않아도 메소드를 호출할 수 있음.
return new Latte()
}
}
class EspressoFactory {
static createCoffee() {
return new Espresso()
}
}
const factoryList = { LatteFactory, EspressoFactory }
class CoffeeFactory {
static createCoffee(type) {
const factory = factoryList[type]
return factory.createCoffee()
}
}
const main = () => {
// 라떼 커피 주문
const coffee = CoffeeFactory.createCoffee("LatteFactory")
// 커피 이름을 부름
console.log(coffee.name)
}
main()
데이터 모델링과 정규화 (1) | 2025.02.05 |
---|---|
디자인 패턴 정리 (MVC 패턴, MVVM 패턴) (2) | 2024.08.28 |
댓글 영역