[리ν©ν°λ§ 2ν] 12.11 μνΌν΄λμ€λ₯Ό μμμΌλ‘ λ°κΎΈκΈ°
1. μνΌν΄λμ€λ₯Ό μμμΌλ‘ λ°κΎΈμ΄μΌ ν λ
κΈ°λ₯μ μ¨μ ν μ¬μ©ν μ μκ³ μ΄μΈλ¦¬μ§ μμ ν΄λμ€λ₯Ό μμνμ λ,
μμμ λ¨Όμ μ μ©νλ€κ° λ¬Έμ κ° μκ²Όμ λ
κ°μ²΄ μ§ν₯μμ μμμ΄ νΌλκ³Ό 볡μ‘λλ₯Ό ν€μΈ μλ μλ€.
μμμ μλͺ» μ μ©ν μλ‘λ μλ°μ μ€ν ν΄λμ€κ° μ λͺ νλ€. μλ°μ μ€νμ 리μ€νΈλ₯Ό μμνκ³ μλλ°,
λ°μ΄ν°λ₯Ό μ μ₯νκ³ μ‘°μνλ 리μ€νΈμ κΈ°λ₯μ μ¬νμ©νκ² λ€λ μκ°μ΄ μ΄λν κ²°κ³Όλ€.
μ΅μ μ
리μ€νΈ(μνΌν΄λμ€)μ μ°μ° μ€ μ€ν(μλΈν΄λμ€)μλ μ μ©λμ§ μλ κ² λ§μμλ κ·Έ λͺ¨λ μ°μ°μ΄ μ€ν μΈν°νμ΄μ€μ κ·Έλλ‘ λ ΈμΆλλ€λ κ²
| 리μ€μ½ν μΉν μμΉ : μλΈ ν΄λμ€λ μνΌ ν΄λμ€ μ리λ₯Ό λ체νλλΌλ μ λμν΄μΌ νλ€. |
μλ°μ μ€νμ²λΌ, μνΌν΄λμ€μ κΈ°λ₯λ€μ΄ μλΈν΄λμ€μ μ΄μΈλ¦¬μ§ μλλ€λ©΄ κ·Έ κΈ°λ₯λ€μ μμμ ν΅ν΄ μ΄μ©νλ©΄ μλλ€λ μ νΈλ€.
μ΄λ€.
μ λλ‘ λ μμμ΄λΌλ©΄ μλΈν΄λμ€κ° μνΌν΄λμ€μ λͺ¨λ κΈ°λ₯μ μ¬μ©ν¨μ λ¬Όλ‘ , μλΈν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μνΌν΄λμ€μ μΈμ€ν΄μ€λ‘λ μ·¨κΈν μ μμ΄μΌ νλ€.
λ°λΌμ, μ€νμμ 리μ€νΈ κ°μ²΄λ₯Ό νλμ μ μ₯ν΄λκ³ νμν κΈ°λ₯λ§ μμνλ€
λ©΄ λ λ©μ‘μ κ²μ΄λ€.
μνΌ/μλΈ ν΄λμ€λ κ°νκ² κ²°ν©λ κ΄κ³λΌμ μνΌν΄λμ€λ₯Ό μμ νλ©΄ μλΈν΄λμ€κ° λ§κ°μ§κΈ° μ½κΈ° λλ¬Έμ μμμΌλ‘ λ°κΎΈκΈ°λ νλ€.
λ€λ§, μμμ λ¨μ μ μμμ κΈ°λ₯μ μ΄μ©ν νΈμ€νΈμ ν¨μ λͺ¨λλ₯Ό μ λ¬ ν¨μλ‘ λ§λ€μ΄μΌ νλ€λ μ μ΄λ€. μ λ¬ ν¨μλ₯Ό μμ±νλ κ²μ λ§€μ° μ§λ£¨νμ§λ§ μμ£Ό λ¨μν΄μ λ¬Έμ κ° μκΈΈ κ°λ₯μ±μ μ λ€.
2. μ μ°¨ λ° ν¨κ³Ό
(1) μνΌ ν΄λμ€ κ°μ²΄λ₯Ό μ°Έμ‘°νλ νλλ₯Ό μλΈν΄λμ€μ λ§λ λ€.(μνΌ ν΄λμ€κ° μμ κ°μ²΄κ° λ κ²μ΄λ―λ‘ μ΄ νλλ₯Ό 'μμμ°Έμ‘°'λΌ λΆλ₯΄μ)
(2) μνΌ ν΄λμ€μ λμ κ°κ°μ λμνλ μ λ¬ ν¨μλ₯Ό μλΈν΄λμ€μ λ§λ λ€(λ¬Όλ‘ μμ μ°Έμ‘°λ‘ μ λ¬νλ€) μλ‘ κ΄λ ¨λ ν¨μλΌλ¦¬ κ·Έλ£ΉμΌλ‘ λ¬Άμ΄ μ§ννλ©°, κ·Έλ£Ήμ νλμ© λ§λ€ λλ§λ€ ν μ€νΈνλ€.
Before
class List {//...}
class Stack extends Lists {//...}
After
class Stack {
constructor(){
this._storage = new List();
}
//μ΄λ κ² νλ©΄ μ΄μ Stackμ Listμ μκ΄μμ΄ μνλ Apiλ€μ μΈλΆμ λ
ΈμΆν μ μλ€.
pop(){//...}
push(){//...}
}
class List {//...}
μμμ μ΄μ©νμ¬ κΈ°λ₯μ μΌλΆλ§ λΉλ €μ€κ³ , μλ‘ λ³κ°μΈ κ°λ μμ΄ λͺ νν΄μ§λ€.
3. μμ
μμμ λκ³ νμ ν΄λμ€μμ μμμ λ°μΌλ €λ©΄ μμ ν΄λμ€ λ°μ λ³μλ₯Ό νλκ°μΌλ‘ μ μΈνλ©΄ λλ€.]
κ·Έλ¦¬κ³ μμ±μμμ μ΄κΈ°νν΄μ€λ€.
<1> 리ν©ν λ§ μ
class CatalogItem {
constructor(id, title, tags) {
this._id = id;
this._title = title;
this._tags = tags;
}
get id() {
return this._id;
}
get title() {
return this._title;
}
}
class Scroll extends CatalogItem {
constructor(id, title, tags, dateLastCleaned) {
super(id, title, tags);
this._lastCleaned = dateLastCleaned;
}
needsCleaning(targetDate) {
const threshold = this.hasTag('revered') ? 700 : 1500;
return this.daysSinceLastCleaning(targetData) > threshold;
}
}
<2> 리ν©ν λ§ ν
class CatalogItem {
constructor(id, title, tags) {
this._id = id;
this._title = title;
this._tags = tags;
}
get id() {
return this._id;
}
get title() {
return this._title;
}
}
class Scroll {
#catalogItem;
constructor(id, dateLastCleaned, catalogId, , catalog) {
this._id = id;
this._catalogItem = catalog.get(catalogId); //Repository ν¨ν΄
this._lastCleaned = dateLastCleaned;
}
get id() {
return this.id;
}
get title() {
return this._catalogItem.title;
}
needsCleaning(targetDate) {
const threshold = this.hasTag('revered') ? 700 : 1500;
return this.daysSinceLastCleaning(targetData) > threshold;
}
}
μ 리
- μμμ λμΌλ €λ©΄ μμμ μ¬μ©νμ!
- λΆλͺ¨ ν΄λμ€λ₯Ό νλκ°μ μ μΈνμ!
μ°Έκ³ λ¬Έν : https://m.blog.naver.com/fbfbf1/222892773497