Constructor Method ¶
μΈμ€ν΄μ€λ₯Ό λ§λ€λ κ°μ₯ μ μ°ν λ°©λ²μ "new" λ©μλ λ€μλ€κ° μ¬λ¬ λ©μΈμ§λ₯Ό 보λ΄μ£Όλ κ²μ΄λ€.
~cpp class Point { /* ... */ void setXnY(int x, int y) { /* ... */ } /* ... */ }; Point* pt = new Point; pt->setXnY(0,0); // C++/JavaλΌλ©΄ μ΄λ κ² μΈ μΌμ μλ€.νμ§λ§ μ΄ λ°©λ²μ μΈλ§ν μΈμ€ν΄μ€λ₯Ό λ§λ€κΈ° μν΄ ν΄λμ€μ λ νΌλ°μ€λ₯Ό μ°Ύμλ΄μΌ νλ λ±μ κ³¨μΉ μν λ¬Έμ κ° μλ€. νΉν ν΄λμ€κ° 볡μ‘ν λλ λ¬Έμ κ° μ’ μ»€μ§λ€.
κ·Έλμ Constructor Methodλ₯Ό μ°κΈ°λ₯Ό κΆνλ€. μ¦ μΈμ€ν΄μ€λ₯Ό λλ°λ‘ λ§λ€μ΄μ£Όλ κ°κ°μ λ©μλλ₯Ό μΆκ°ν΄μ£Όλ κ²μ΄λ€.
νκ°μ§ μλ‘ μμ κ²μ κ³ μ³λ³΄μ.
νκ°μ§ μλ‘ μμ κ²μ κ³ μ³λ³΄μ.
~cpp class Point { /* ... */ void setXnY(int x, int y) { /* ... */ } static Point* makeFromXnY(int x, int y) { Point* pt = new Point; pt->setXnY(x,y); return pt; } /* ... */ }; Point* pt = Point::makeFromXnY(0,0);λλ€λ₯Έ μλ‘ λ°μ§λ¦κ³Ό κ°λλ₯Ό λ°μ x,yλ₯Ό κ³μ°ν΄μ£Όλ Constructor methodλ₯Ό λ§λ€μ΄λ³΄μ.
~cpp class Point { /* ... */ void setXnY(int x, int y) { /* ... */ } static Point* makeFromXnY(int x, int y) { /* ... */ } static Point* makeFromRnTheta(int r, int theta) { return makeFromXnY(r*cos(theta),r*sin(theta)); } /* ... */ };νμ§λ§ μ΄ ν¨ν΄μ C++/Javaμμλ λ³λ‘ νμκ° μμλ―νλ€. μμ±μμ μ€λ²λ‘λ©μ μΈμ΄ μ°¨μμμ μ§μν΄μ£Όλλ° κ΅³μ΄ μΈ νμκ° μλ νλ μκ°μ΄ λ λ€. νμ§λ§ μ€λͺ°ν ν¬μμλ newλ₯Ό μ€λ²λ‘λ©νλκ±Έ 그리 λ°κ²¨νλκ² κ°μ§λ μλ€.
''DesignPatterns λ‘ μ΄μΌκΈ°νλ€λ©΄ μΌμ’
μ FactoryMethod μ.(μμ ν λ§€μΉλλ건 μλκ³ , μ΄λμ λ λΉμ·) λΉκ΅μ μμ£Ό μ¬μ©λλ ν¨ν΄μΈλ°, μλνλ©΄ κ°μ²΄λ₯Ό μμ±νκ³ κ°κ° μμλ‘ μ
ν
ν΄μ£Όλ μΌμ μμ±μ μ€λ²λ‘λ©μ λνμ§ μκ³ μλ ν μ μμΌλκΉ.
μμ νλ‘κ·Έλλ° νλ©΄μ λλΌλ μ μ, κ³Όλν μ€λ²λ‘λ©μ ν΄λΉ κ°μ²΄λ₯Ό μ΄μ©νλ μ¬λμ μ₯μμ 골μΉμνκ² λ§λ λ€λκ². μλνλ©΄, κ°μ λ©μλ μ΄λ¦μμλ ν΄λΉ νλΌλ©ν°κ° λ€λ₯Έ κ²μΌλ‘ λ°λμμλμ λν μλλ₯Ό λ©μλ μ΄λ¦μ λλ¬λμ§ μκΈ° λλ¬Έμ.
κ°μΈμ μΌλ‘λ JUnit Test μμ±ν λ, Test λμμ΄ λλ ν΄λμ€μ λν 리ν©ν λ§ μλνλμ€ μ€κ°λ¨κ³ μν λ‘ λ§μ΄ μ¨λ¨Ήμμ.
μμ νλ‘κ·Έλλ° νλ©΄μ λλΌλ μ μ, κ³Όλν μ€λ²λ‘λ©μ ν΄λΉ κ°μ²΄λ₯Ό μ΄μ©νλ μ¬λμ μ₯μμ 골μΉμνκ² λ§λ λ€λκ². μλνλ©΄, κ°μ λ©μλ μ΄λ¦μμλ ν΄λΉ νλΌλ©ν°κ° λ€λ₯Έ κ²μΌλ‘ λ°λμμλμ λν μλλ₯Ό λ©μλ μ΄λ¦μ λλ¬λμ§ μκΈ° λλ¬Έμ.
κ°μΈμ μΌλ‘λ JUnit Test μμ±ν λ, Test λμμ΄ λλ ν΄λμ€μ λν 리ν©ν λ§ μλνλμ€ μ€κ°λ¨κ³ μν λ‘ λ§μ΄ μ¨λ¨Ήμμ.
ps. μ€λͺ°ν ν¬μμλ μ€λ²λ‘λ©μ΄ μλ κ±Έλ‘ μκ³ μμ. --1002''
μ.. μ€λ²λ‘λ©μ΄ μλμ? 보면 newλ new:μ΄λ κ² λκ° μλ ν΄λμ€λ μλλ°... μ 건 μμ λ€λ₯Έ λ©μΈμ§μΈκ°μ? --μΈμ