πμ½μ μ± μ 리 (39) μΈλ€μΌν 리μ€νΈν [μ΄νν°λΈ μλ°] 5μ₯ : μ λ€λ¦ μ λ€λ¦ μ§μνκΈ° μ μλ°μλ 컬λ μ μμ κ°μ²΄λ₯Ό κΊΌλΌ λλ§λ€ νλ³νμ ν΄μΌνμ (μ΄λ μ€μλ‘ μΈν λ°νμμλ¬λ₯Ό λ°μμν΄) κ·Έλμ μ»΄νμΌλ¬λ μμμ νλ³ν μ½λλ₯Ό μΆκ°ν μ μκ³ μλ±ν νμ μ κ°μ²΄λ₯Ό λ£μΌλ €λ μλλ₯Ό μ»΄νμΌ κ³Όμ μμ μ°¨λ¨νμ¬ λ μμ νκ³ λͺ νν νλ‘κ·Έλ¨μ λ§λ€μ΄μ€λ€. μ λ€λ¦μ μ΄μ μ μ΅λν μ΄λ¦¬κ³ λ¨μ μ μ΅μννμ¬ μ¬μ©ν΄λ³΄μ. μμ΄ν 26 : λ‘(raw) νμ μ μ¬μ©νμ§ λ§λΌ ν΄λμ€, μΈν°νμ΄μ€ μ μΈμ ‘νμ 맀κ°λ³μ'κ° μ°μ΄λ©΄ μ λ€λ¦ ν΄λμ€, μΈν°νμ΄μ€λΌκ³ λΆλ¦ → μ΄λ₯Ό ν΅νμ΄ ‘μ λλ¦ νμ 'μ΄λΌκ³ ν¨ → ‘μ λ€λ¦ νμ ’μ 맀κ°λ³μν νμ μ μ μνλ€. → ‘μ λ€λ¦ νμ 'μ μ μνλ©΄ ‘raw νμ ' λ μ μλλ€. (νμ 맀κ°λ³μλ₯Ό μ¬μ©νμ§ μλ νμ ) ex) List → List (μ λ€λ¦ λ.. [μ΄νν°λΈ μλ°] 4μ₯ : ν΄λμ€μ μΈν°νμ΄μ€ μμ μ 리νκ² λ€ λ λΌκ°λ²λ Έλ€... λ€μ νλ² κ³΅λΆνλ©΄μ μ 리ν΄μΌκ² λ€.. μμ΄ν 24 : λ©€λ² ν΄λμ€λ λλλ‘ staticμΌλ‘ λ§λ€λΌ μ€μ²© ν΄λμ€μ μ’ λ₯ μ μ λ©€λ² ν΄λμ€ λΉμ μ λ©€λ² ν΄λμ€ μ΅λͺ ν΄λμ€ μ§μ ν΄λμ€ μ΄ μ€ μ²«λ²μ§Έλ₯Ό μ μΈν λλ¨Έμ§λ λ΄λΆ ν΄λμ€(inner class)μ΄λ€. μ μ λ©€λ² ν΄λμ€μ νΉμ§ λ°κΉ₯ ν΄λμ€μ privateλ©€λ²μ μ κ·Όκ°λ₯ λ°κ° ν΄λμ€μ ν¨κ» μ°μΌ λ μ μ©ν public λμ°λ―Έ ν΄λμ€λ‘ μ°μ λΉμ μ λ©€λ² ν΄λμ€ μΈμ€ν΄μ€ν λ λ λΉμ μ λ©€λ² ν΄λμ€κ° νλ¦½λ¨ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό κ°μΈ λ€λ₯Έ ν΄λμ€μ μΈμ€ν΄μ€μ²λΌ 보μ΄κ²ν¨ λ©€λ² ν΄λμ€μμ λ°κ° μΈμ€ν΄μ€λ‘ μ κ·Όν μ΄ μλ€λ©΄ μ μ λ©€λ² ν΄λμ€λ‘ μ μ λ°κΉ₯ μΈμ€ν΄μ€μ μΈλΆ μ°Έμ‘°λ₯Ό μ»μ μ μμΌλ―λ‘ μ°¨λ¨ κ°λΉμ§ 컬λ μ μ΄ λ°κΉ₯ ν΄λμ€μ μΈ.. [μ΄νν°λΈ μλ°] 3μ₯ : λͺ¨λ κ°μ²΄μ κ³΅ν΅ λ©μλ λͺ¨λ κ°μ²΄μ κ³΅ν΅ λ©μλ Objectλ κ°μ²΄λ₯Ό λ§λ€ μ μλ ꡬ체 ν΄λμ€μ§λ§ κΈ°λ³Έμ μΌλ‘ μμν΄μ μ¬μ©νλλ‘ μ€κ³λ¨ Objectμμ finalμ΄ μλ λ©μλλ λͺ¨λ μ¬μ μλ₯Ό μΌλμ λκ³ μ€κ³λμ΄μ§. λ°λΌμ, μ΄ λ©μλλ₯Ό μ¬λ°λ₯΄κ² μ€λ²λΌμ΄λ©ν΄μΌλ§ ν΄λμ€κ° μ€λμ νμ§ μλλ€. μμ΄ν 10 : equalsλ μΌλ° κ·μ½μ μ§μΌ μ¬μ μνλΌ equals λ©μλλ μ€λ²λΌμ΄λ© νμ§ μμΌλ©΄ μ€μ§! μκΈ°μμ λ§ κ°λ€. (κ°μ²΄μλ³μ±μΌλ‘ λΉκ΅) μ€λ²λΌμ΄λ©μ΄ νμν κ²½μ° κ°μ²΄ μλ³μ΄ μλ 'λ Όλ¦¬μ λμΉμ±'μ νμΈ ν΄μΌν λ μ£Όλ‘ κ° ν΄λμ€ ( new Inteager(2)λ₯Ό λλ²νλ©΄ 물리μ μΌλ‘ λ€λ₯Έ κ°μ²΄μ΄λ λ Όλ¦¬μ μΌλ‘λ κ°μ κ°μ κ°μ§λ κ°μ²΄κ° λλ€ μμ§μ equals λ©μλ ꡬνλ°©λ² 1. == μ°μ°μλ₯Ό μ¬μ©ν΄ μ λ ₯μ΄ μκΈ° μμ μ.. [μ΄νν°λΈ μλ°] 2μ₯ : κ°μ²΄ μμ±κ³Ό νκ΄΄ 2μ₯ κ°μ²΄ μμ±κ³Ό νκ΄΄ κ°μ²΄λ₯Ό ‘λ§λ€μ΄μΌ νλ μκΈ°'λ₯Ό ꡬλΆνλ λ°©λ² λΆνμν μμ±μ νΌνλ λ°©λ² μ λ νκ΄΄λ¨μ 보μ₯νκ³ νκ΄΄μ μ μνν΄μΌν μμ μ²λ¦¬ λ°©λ² μμ΄ν 1 : μμ±μ λμ μ μ ν©ν°λ¦¬ λ©μλλ₯Ό κ³ λ €νλΌ ν΄λμ€λ μμ±μμ λ³λλ‘ μ μ ν©ν°λ¦¬ λ©μλλ₯Ό μ 곡ν μ μλ€. μ μ ν©ν 리 λ©μλ μ΄λ¦μ κ°μ§ μ μλ€. (λ°ν κ°μ²΄μ νΉμ± μ€λͺ κ°λ₯) νΈμΆ μλ§λ€ μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμλ λλ€. λ°ν νμ μ νμ νμ κ°μ²΄λ₯Ό λ°νν μ μλ λ₯λ ₯μ΄ μλ€. λ°νν κ°μ²΄μ ν΄λμ€λ₯Ό μμ λ‘κ² μ νν μ μλ ‘μ μ°μ±'μ μ 곡 ν©ν 리 λ©μλ μ΄λ¦μ λ°λΌ κ°κΈ° λ€λ₯Έ κΈ°λ₯μ ꡬν체 μμ± κ°λ₯ (λ°ν μ°Έμ‘° κ°μ²΄λ κ°λ€) → μ΄λ μΈν°νμ΄μ€λ₯Ό μ μ ν©ν 리 λ©μλ λ°ν νμ μΌλ‘ μ¬μ©νλ μΈν°νμ΄μ€ κΈ°λ° νλ μμ.. [μλ° λ§μ€ν°λΆ] 12μ₯ : λμμΈν¨ν΄ μ¦κΈ°κΈ° - νλ κ°μ²΄μ 'νλ'μ λν λμμΈ ν¨ν΄ 1. Command 2. Strategy 3. Iterator 4. Observer 12.4.1 Command ν¨ν΄ - 'λͺ λ Ή'μ μΈμ€ν΄μ€λ‘ μ·¨κΈνμ¬ μ²λ¦¬ μ‘°ν©μ μ½κ² νλ€. μ²λ¦¬ λ΄μ©μ΄ λΉμ·ν λͺ λ Ήμ ν¨ν΄μ λ°λΌ ꡬλΆνκ±°λ μ€ννλ μ²λ¦¬κ° νμν μ μλ€. μλ₯Ό λ€μ΄ κ³μ μ λ°λΌ λ°λλ ν μΈμ¨ μ μ©μ΄ μμ μ μλ€. Command ν¨ν΄μ 'λͺ λ Ή' μ체λ₯Ό μΈμ€ν΄μ€λ‘ μ·¨κΈν΄ μ²λ¦¬μ μ‘°ν©μ μ©μ΄νκ² νλ ν¨ν΄μ΄λ€. Book.java public class Book { private double amount; public Book(double amount) { this.amount = amount; } public double getAmount() { return amoun.. [μλ° λ§μ€ν°λΆ] 12μ₯ : λμμΈν¨ν΄ μ¦κΈ°κΈ° - ꡬ쑰 12.3 ꡬ쑰μ κ΄ν ν¨ν΄ 12.3.1 Adapter ν¨ν΄ - μΈν°νμ΄μ€μ `νΈνμ±μ΄ μλ ν΄λμ€`λ€μ μ‘°ν©μν€κΈ° κΈ°μ‘΄ μμ€ν μ μ¬μ¬μ©νμ¬ μλ‘μ΄ μμ€ν μ μ¬μ©νλ€κ³ κ°μ ν΄λ³΄μ. μ΄λ μλ‘μ΄ μμ€ν μ μ§κΈκΉμ§ μ¬μ©νλ λ©μλμλ λ€λ₯Έ μΈν°νμ΄μ€λ₯Ό κ°μ§κ³ μλ€. μ΄ κ²½μ°μλ κΈ°μ‘΄ μμ€ν μ μμ λμ μμ μ νκ² λλ©΄ μμ²λ λ³νλ₯Ό κ°μνκ² λλ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν 'μλ¨'μ΄ Adapter ν¨ν΄μ΄λ€. μ΄ ν¨ν΄μ 'μΈν°νμ΄μ€'μ νΈνμ±μ΄ μλ ν΄λμ€λ€μ μ‘°ν©μν€λ κ²μ λͺ©μ μΌλ‘ νμ¬ κΈ°μ‘΄ μμ€ν κ³Ό μλ‘μ΄ μμ€ν μ μΈν°νμ΄μ€λ₯Ό ν‘μνλ Adapterλ₯Ό μ 곡νμ¬ 'μ μ λ³κ²½μΌλ‘ κΈ°μ‘΄ μμ€ν μ μλ‘μ΄ μμ€ν μ μ μ©ν μ μλλ‘' νλ€. Adapter ν¨ν΄μ λ κ°μ§ λ°©λ²μ΄ μλ€. 1. μμμ μ΄μ©νλ λ°©λ² .. [μλ° λ§μ€ν°λΆ] 12μ₯ λμμΈν¨ν΄ μ¦κΈ°κΈ° - μμ± 12.1 λμμΈ ν¨ν΄μ κΈ°λ³Έ 12.1.1 λμμΈ ν¨ν΄μ΄λ? μ°λ¦¬κ° νλ‘κ·Έλ¨μ μμ±ν λ μμ±λλ κ²μ 'λͺ©μ 'κ³Ό 'κ°λ°μ'μ λ°λΌ μ²μ°¨λ§λ³μ΄λ€. κ·Έλ¬λ μ΄λ₯Ό κ°κ°μ λΆνλ¨μλ‘ μ΄ν΄λ³΄λ©΄ νλ‘κ·Έλ¨λ§λ€ λΉμ·ν λΆλΆμ΄ μ‘΄μ¬νλ€. μλ₯Ό λ€μ΄, 'μ΄λ€ μνκ° λ°λμμ λ λ°μνλ ν΄λμ€κ΅° λ§λ€κΈ°' 'λ€λ₯Έ νμ΄ λ§λ λΆνκ³Όμ μ€κ°λ₯Ό νλ ν΄λμ€ λ§λ€κΈ°', 'μ¬κ·μ μΈ κ΅¬μ‘°λ₯Ό ν΄λμ€λ‘ νννκΈ°'μ κ°μ κ²λ€μ΄ μλ€. μ΄λ° λΉμ·ν λͺ©μ μ λν΄ ν΄λμ€ κ΅¬μ‘°μ λͺ¨λ²μ¬λ‘λ₯Ό ν¨ν΄μΌλ‘ μ 리ν κ²μ΄ λμμΈ ν¨ν΄μ΄λ€. μ΄ μ€ κ°μ₯ μ λͺ ν κ²μ΄ 'GoF λμμΈ ν¨ν΄'μ΄λ©° κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ λμμ΄λλ λμμΈ ν¨ν΄ 23κ°μ§λ₯Ό μκ°νλ€. 23μ’ λ₯μ ν¨ν΄μ ν¬κ² 3κ°μ§λ‘ λΆλ₯λμ΄ μλ€. κ°μ²΄μ 'μμ±'μ κ΄ν ν¨ν΄ νλ‘κ·Έλ¨μ 'ꡬ쑰'μ κ΄.. [μλ° λ§μ€ν°λΆ] 10μ₯ κ°μ²΄μ§ν₯ μ¦κΈ°κΈ° 10.1 κΈ°λ³Ένκ³Ό μ°Έμ‘°νμ κ° μ λ¬νκΈ° 10.1.1 κΈ°λ³Ένκ³Ό μ°Έμ‘°νμ κ° μ λ¬ λ°©λ² κΈ°λ³ΈνμΌλ‘ κ°μ μ λ¬νλ κ²½μ°μλ μμ μμμ κ°μ λ³κ²½ν΄λ νΈμΆμμ μν₯μ μ£Όμ§ λͺ»νλ€. νμ§λ§ μ°Έμ‘°νμ κ° μ λ¬μ νλ©΄ μμ μ μμμ λ³κ²½λ κ°μ΄ νΈμΆμ λ°μλλ€. "μ°Έμ‘°ν"μ κ²½μ°λ κ°μ²΄ μ체μ κ°μ 볡μ¬ν΄μ λκΈ°λ κ²μ΄ μλ 'μ°Έμ‘°'λ₯Ό λνλ΄λ κ°μ μ λ¬νκΈ° λλ¬Έμ΄λ€. λ°λΌμ νΈμΆλ λ©μλμ λ³κ²½ μ¬νμ΄ νΈμΆμμκ² λ°μλλ€. λ°λΌμ, μΈμμ κ°μ²΄λ₯Ό μ λ¬νμ λλ λ©μλ μμμ κ°μ΄ λ³νλμ§μ λν μ¬λΆλ₯Ό λͺ νν ν΄μΌλ§ νλ€. μ± μ μ μλ μ΄λ₯Ό μν΄ κ·μΉμ μ ν΄λμλ€. μμΉμ μΌλ‘ μΈμ κ°μ²΄μ μμ μ νΌνλ€. λ°νκ°μ΄ voidμΈ κ²½μ° μΈμκ°μ²΄λ₯Ό μμ ν΄λ μ’λ€. λ°νκ°μ΄ void μ΄μΈμ κ²½μ° μΈμ κ°μ²΄λ₯Ό λ³κ²½ν΄μλ μλλ€.. μ΄μ 1 2 3 4 5 λ€μ