320x100
320x100
디자인 패턴의 3가지 유형
- Creational
: 객체 인스턴스 생성
- Structual
: 객체 설계 방식
- Behavioural
: 객체가 상호 작용하는 방식
Singleton
: 클래스의 단일 인스턴스만을 원할 때 사용하는 패턴
: node.js에서는 module caching system을 이용하여 캐시된 내용을 바로 쓸 수 있어 싱글턴 패턴을 구현할 수 있음
class DatabaseConnection {
constructor() {
this.databaseConnection = 'dummytext'
}
getNewDBConnection() {
return this.databaseConnection
}
}
module.exports = new DatabaseConnection()
Factory
: 객체를 생성하는데 사용되는 인터페이스 또는 추상 클래스를 정의
: 이렇게 생성된 인터페이스 및 추상클래스를 사용하여 다른 객체를 초기화
: 기존 코드를 손상시키지 않더라도 새 객체를 응용프로그램에 사용 가능
: 인스턴스 생성과 관련된 모든 코드가 한 곳에 있으므로 코드를 더 잘 꾸밀 수 있음
import Motorvehicle from './Motorvehicle'
import Aircraft from './Aircraf'
import Railvehicle from './Railvehicle'
const VehicleFactory = (type, make, model, year) => {
if (type === car) {
return new Motorvehicle('car', make, model, year)
} else if (type === airplane) {
return new Aircraft('airplane', make, model, year)
} else if (type === helicopter) {
return new Aircraft('helicopter', make, model, year)
} else {
return new Railvehicle('train', make, model, year)
}
}
module.exports = VehicleFactory
// 첫번째 매개변수에서 타입을 지정하고, 나머지는 그대로 변수를 넘긴다.
const audiAllRoad = VehicleFactory('car', 'Audi', 'A6 Allroad', '2020')
Builder
: 객체 구조와 객체를 분리 할 수 있는 패턴
: 복잡한 객체를 생성하는 코드를 단순화
class Car {
constructor(make, model, year, isForSale = true, isInStock = false) {
this.make = make
this.model = model
this.year = year
this.isForSale = isForSale
this.isInStock = isInStock
}
toString() {
return console.log(JSON.stringify(this))
}
}
class CarBuilder {
constructor(make, model, year) {
this.make = make
this.model = model
this.year = year
}
notForSale() {
this.isForSale = false
return this
}
addInStock() {
this.isInStock = true
return this
}
build() {
return new Car(
this.make,
this.model,
this.year,
this.isForSale,
this.isInStock,
)
}
}
module.exports = CarBuilder
const CarBuilder = require('./CarBuilder')
const bmw = new CarBuilder('bmw', 'x6', 2020).addInStock().build()
const audi = new CarBuilder('audi', 'a8', 2021).notForSale().build()
const mercedes = new CarBuilder('mercedes-benz', 'c-class', 2019).build()
Prototype
: 모든 객체가 어떤 객체를 상속하는 패턴
: 자바스크립트는 프로토타입 기반 언어임
: 프로토타입에 정의된 함수는 모든 새 클레스에서 상속 됨
: 샠 ㅡㄹ래스는 개별 복사본을 갖는 대신 동일한 기능을 가짐
const atvPrototype = {
mud: () => {
console.log('Mudding')
},
}
function Atv(make, model, year) {
function constructor(make, model, year) {
this.make = make
this.model = model
this.year = year
}
constructor.prototype = atvPrototype
let instance = new constructor(make, model, year)
return instance
}
const atv1 = Atv()
const atv2 = Atv('Honda', 'Rincon 650', '2018')
300x250
728x90
'Programming > NodeJS' 카테고리의 다른 글
NodeJS와 ExpressJS에 대해서 (0) | 2022.05.05 |
---|---|
[NodeJS] Youtube API v3 ESLint 기준에 맞춘 소스코드 (0) | 2022.04.30 |
노드 개발자라면 알아야할 NodeJS 라이브러리와 패키지 (0) | 2022.02.26 |
nodeJS 프로젝트에 logger 적용 (0) | 2022.01.30 |
NodeJS 웹 서버 기초 (Red Hat) (0) | 2021.07.18 |