Proxy Pattern
JavaScript κΈ°μ€μΌλ‘ μ€λͺ ν©λλ€.
μλ―Έμ νΉμ±
μ€μ , μ‘°ν λ±μ κΈ°λ³Έμ μΈ κ°μ²΄ λμμ μ¬μ μνλ Proxy κ°μ²΄λ₯Ό νμ©ν ν¨ν΄μ΄λ€. μ΄λ€ κ°μ²΄λ₯Ό μ¬μ©νκ³ μ ν λ, κ°μ²΄λ₯Ό μ§μ μ μΌλ‘ μ°Έμ‘°νλ κ²μ΄ μλλΌ Proxy κ°μ²΄λ₯Ό ν΅ν΄ ν΄λΉ κ°μ²΄μ μ κ·Όνλ€.
νλ‘μ ν¨ν΄μ μλμ κ°μ νΉμ±μ κ°λλ€.
μλ³Έ κ°μ²΄μ λν μ κ·Όμ μ μ΄νλ€.
JavaScriptμμλ νμ ν
Proxy
κ°μ²΄λ₯Ό ν΅ν΄ μ£Όλ‘ κ΅¬ννλ€.
JavaScript Proxy
νΉμ κ°μ²΄λ₯Ό κ°μΈ κ°μ²΄μ κ°ν΄μ§λ μμ
μ μ€κ°μμ κ°λ‘μ±λ λ΄μ₯ κ°μ²΄μ΄λ€. new Proxy(target, handler);
ννλ‘ μμ±νλ€. μ¬κΈ°μ target
μ μλ³Έ κ°μ²΄μ΄κ³ , handler
λ νλ‘μμ λμμ μ μνλ κ°μ²΄μ΄λ€. λΉ handler
λ‘ μμ±λ νλ‘μ κ°μ²΄λ μλ³Έ κ°μ²΄μ λμΌν λμμ νλ©°, get
, set
λ±μ λ©μλλ₯Ό handler
μ μΆκ°νμ¬ μλ³Έ κ°μ²΄μ μμ±μ μ κ·Όνκ±°λ μμ ν μ μλ€. handler
λ μλ³Έ κ°μ²΄μ λν νΈμΆμ μ‘μλΈλ€λ μλ―Έμμ νΈλ©μ΄λΌκ³ λΆλ¦¬κΈ°λ νλ€.
μμ± μ μ£Όμν μ μ΄ λͺ κ°μ§ μλ€.
Proxy
λ₯Ό λ κ°λ¨νκ² μμ±ν μ μκ² νλ λ΄μ₯ κ°μ²΄μ΄λ€. Proxy
μ λ¬λ¦¬ ν¨μ κ°μ²΄κ° μλλ―λ‘ μμ±μλ‘ μ¬μ©λμ§ μλλ€. (new
μ°μ°μλ₯Ό ν΅ν΄ μμ±νμ§ μλλ€.) Proxy handler
μ get()
, set()
λ±μ κΈ°λ³Έ λ©μλλ₯Ό κ°κ³ μμΌλ, Proxy
λ λ©μλλ₯Ό μ§μ νΈμΆν μ μλ κ²μ λ°ν΄ Reflect
λ κ°λ₯νλ€.
Proxy handler
λ΄λΆ λμλ€μ λ체νλ μμλ₯Ό μ΄ν΄λ³΄μ.
get()
λ©μλ:obj[prop]
->Reflect.get(obj, prop)
set()
λ©μλ:obj[prop] = value
->Reflect.set(obj, prop, value)
λ λ§μ μμλ μ΄ λ¬Έμμμ νμΈν μ μλ€.
ꡬν μμ
νλ‘μ ν¨ν΄μΌλ‘ μ ν¨μ± κ²μ¬ ꡬννκΈ°
Reflectλ₯Ό νμ©ν΄ ꡬννκΈ°
μ΄ λ¬Έμμμ νλ‘μλ₯Ό νμ©ν΄ ꡬνλ λ€μν λͺ¨λλ€μ νμΈν μ μλ€. κ°μΈμ μΌλ‘ python-rangeκ° κ°μ₯ ν₯λ―Έλ‘μ λ€.
μ₯μ
μλ³Έ κ°μ²΄μ λν μ κ·Όμ μ μ΄νλ νΉμ±μ κ°μ νλ‘μ(ex. μ΄λ―Έμ§ μ§μ° λ‘λ), λ³΄νΈ νλ‘μ(ex. νΉμ κ°μ²΄μ λν μ κ·Ό μ ν) λ±μ λ€μν ꡬν μν©μ μ μ©ν μ μλ€.
λ¨μ
κ°μ²΄ μμ± μ ν λ¨κ³λ₯Ό λ κ±°μΉκ² λλ―λ‘, λΉλ²νκ² μμ±λμ΄μΌ νλ κ°μ²΄μ μ¬μ©λμμ λ μλ³Έ κ°μ²΄λ₯Ό μ§μ μ¬μ©ν λλ³΄λ€ μ±λ₯μ΄ μ νλλ€.
νλ‘μ κ°μ²΄μ λ©μλ λ΄μμ 볡μ‘ν μμ μ΄ λ°μνλ©΄ μ±λ₯μ΄ μ νλ μ μλ€. (μ°Έκ³ λ¬Έμ)
μ°Έκ³ μλ£
Last updated