κ°μ²΄λ₯Ό μ¬μ©νλ μ½λμμ κ°μ²΄ μμ± λΆλΆμ λΌμ΄λ΄ μΆμνν ν¨ν΄μ΄μ, μμ κ΄κ³μ μλ λ ν΄λμ€μμ μμ ν΄λμ€κ° μ€μν λΌλλ₯Ό κ²°μ νκ³ , νμ ν΄λμ€μμ κ°μ²΄ μμ±μ κ΄ν ꡬ체μ μΈ λ΄μ©μ κ²°μ νλ ν¨ν΄μ΄λ€.
μμ ν΄λμ€μ νμ ν΄λμ€κ° λΆλ¦¬λκΈ° λλ¬Έμ λμ¨ν κ²°ν©μ κ°μ§κ³ , μμ ν΄λμ€μμλ μΈμ€ν΄μ€ μμ± λ°©μμ λν΄ μ νμκ° μκΈ° λλ¬Έμ λ λ§μ μ μ°μ±μ κ°μ§κ² λλ€.
κ·Έλ¦¬κ³ κ°μ²΄ μμ± λ‘μ§μ΄ λ°λ‘ λΌμ΄μ Έ μκΈ° λλ¬Έμ μ½λλ₯Ό 리ν©ν λ§νλλΌλ ν κ³³λ§ κ³ μΉ μ μκ² λμ΄ μ μ§ λ³΄μμ±μ΄ μ¦κ°νλ€.
μλ₯Ό λ€μ΄, λΌλΌ λ μνΌμ μλ©λ¦¬μΉ΄λ Έ λ μνΌ, μ°μ λ μνΌλΌλ ꡬ체μ μΈ λ΄μ©μ΄ λ€μ΄μλ νμ ν΄λμ€κ° μκ³ , μμ ν΄λμ€μΈ λ°λ¦¬μ€ν 곡μ₯μμ μ΄ λ μνΌ(νμν΄λμ€)λ€μ ν λλ‘ μνμ μμ°νλ μμ° κ³΅μ μ μκ°ν μ μλ€.
μλ°μ€ν¬λ¦½νΈμμλ κ°λ¨νκ² new Object()λ₯Ό μ΄μ©ν΄μ ν©ν 리 ν¨ν΄μ ꡬνν μ μλ€.
const num = new Object(42);
const str = new Object('abc');
num.constructor.name; // Number
str.constructor.name; // String
new Object()λ λ΄μ₯ μμ±μ ν¨μ μ€ νλλ‘, Object μμ±μ ν¨μλ₯Ό νΈμΆνμ¬ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νλ€. μμ±λ κ°μ²΄λ Object.prototypeμ μμλ°λλ€.
κ°μ²΄ μμ±κ³Ό κ΄λ ¨λ μΈλΆ μ¬νμ ν΄λΌμ΄μΈνΈ μ½λλ‘λΆν° μΆμννμ¬ μ½λμ κ°λ μ±μ λμ΄κ³ , μ μ§λ³΄μμ±μ ν₯μμν¬ μ μλ€.
λν, μλ°μ€ν¬λ¦½νΈμ λμ νμ νΉμ± λλ¬Έμ λ€μν νμ μ κ°μ²΄λ₯Ό λμ μΌλ‘ μμ±νλ λ° μ ν©νλ€.
μμμ μμλ‘ λ μ»€νΌ κ³΅μ₯μ μμλ₯Ό μλ°μ€ν¬λ¦½νΈλ‘ ꡬνν΄λ³΄λ©΄ λ€μκ³Ό κ°λ€.
Class Latte {
constructor() {
this.name='latte';
}
}
Class Espresso {
constructor() {
this.name='espresso';
}
}
Class LatteFactory {
static createCoffee() {
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) //latte
}
main()
CoffeeFactoryλΌλ μμν΄λμ€κ° μ€μν λΌλλ₯Ό κ²°μ νκ³ , νμ ν΄λμ€μΈ LatteFactoryκ° κ΅¬μ²΄μ μΈ λ΄μ©μ κ²°μ νκ³ μλ€.
μ΄λ μμ‘΄μ± μ£Όμ μ΄λΌκ³ λ ν μ μλ€. CoffeeFactoryμμ LatteFactoryμ μΈμ€ν΄μ€λ₯Ό μμ±νλ κ²μ΄ μλλΌ, LatteFactoryμμ μμ±ν μΈμ€ν΄μ€λ₯Ό CoffeeFactoryμ μ£Όμ νκ³ μκΈ° λλ¬Έμ΄λ€.
λ, CoffeeFactory ν΄λμ€λ₯Ό 보면 static ν€μλλ₯Ό ν΅ν΄ createCoffee() λ©μλλ₯Ό μ μ λ©μλλ‘ μ μΈνλλ°, μ΄λ κ² μ μ λ©μλλ‘ μ μνλ©΄ ν΄λμ€λ₯Ό κΈ°λ°μΌλ‘ κ°μ²΄λ₯Ό λ§λ€μ§ μκ³ νΈμΆμ΄ κ°λ₯νλ©°, νμν λλ§λ€ κ°μ²΄λ₯Ό μμ±ν΄μ μ¬μ©ν΄μΌ νλ κ²μ΄ μλκΈ° λλ¬Έμ ν΄λΉ λ©μλμ λν λ©λͺ¨λ¦¬ ν λΉμ ν λ²λ§ ν μ μλ€λ μ₯μ μ΄ μλ€.
'CS > λμμΈ ν¨ν΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λμμΈ ν¨ν΄] νλ‘μ ν¨ν΄(Proxy Pattern)κ³Ό νλ‘μ μλ²(Proxy Server) (0) | 2023.08.03 |
---|---|
[λμμΈ ν¨ν΄] μ΅μ λ² ν¨ν΄(Observer Pattern) (0) | 2023.08.02 |
[λμμΈ ν¨ν΄] μ λ΅ ν¨ν΄(Strategy Pattern) (0) | 2023.08.02 |
[λμμΈ ν¨ν΄] μ±κΈν€ ν¨ν΄(Singleton Pattern) (0) | 2023.08.01 |
[λμμΈ ν¨ν΄] SOLID μμΉ (0) | 2023.08.01 |