πΊοΈ Design Pattern
Factory Method Pattern ν©ν 리 λ©μλ ν¨ν΄μ μΈμ€ν΄μ€λ₯Ό μμ±νλ λ°©λ²μ μμ ν΄λμ€ μΈ‘μμ κ²°μ νμ§λ§, ꡬ체μ μΈ μΈμ€ν΄μ€μ μ νκΉμ§λ κ²°μ νμ§ μλ λμμΈ ν¨ν΄μ
λλ€. λμ , ꡬ체μ μΈ λ΄μ©μ λͺ¨λ νμ ν΄λμ€ μΈ‘μμ μνλ©λλ€. μ΄λ₯Ό ν΅ν΄ μΈμ€ν΄μ€ μμ±μ μν 골격과 μ€μ μΈμ€ν΄μ€ μμ±μ ν΄λμ€λ₯Ό λΆλ¦¬νμ¬ μκ°ν μ μμ΅λλ€. μμ ν΄λμ€μμ μΈμ€ν΄μ€ μμ± λ°©λ² κ²°μ : μμ ν΄λμ€μμλ μΈμ€ν΄μ€λ₯Ό μμ±νκΈ° μν μΆμ λ©μλ(ν©ν 리 λ©μλ)λ₯Ό μ μν©λλ€. μ΄ λ©μλλ μ€μ λ‘ μ΄λ€ μ νμ μΈμ€ν΄μ€λ₯Ό μμ±ν μ§ κ²°μ νμ§ μκ³ , κ·Έ κ²°μ μ νμ ν΄λμ€μ μμλ©λλ€. νμ ν΄λμ€μμ ꡬ체μ μΈ λ΄μ© μν: μ€μ μΈμ€ν΄μ€ μμ±μ κ΄λ ¨λ ꡬ체μ μΈ λ‘μ§μ νμ ν΄λμ€μμ μνλ©λλ€. κ° νμ ν΄λμ€λ μ..
πΊοΈ Design Pattern
Creation Design Pattern (μμ± λμμΈ ν¨ν΄) μμ± λμμΈ ν¨ν΄μ κ°μ²΄ μμ±μ κ΄λ ¨λ λμμΈ ν¨ν΄μ λ§ν©λλ€. μ΄ ν¨ν΄λ€μ κ°μ²΄μ μμ± κ³Όμ μ μΊ‘μννμ¬, κ°μ²΄ μμ±μ λ μ μ°νκ² λ§λ€μ΄ μ€λλ€. μ£Όλ‘ κ°μ²΄ μμ± λ‘μ§μ΄ λ¨μνμ§ μκ±°λ, κ°μ²΄ μμ±κ³Ό κ΄λ ¨λ μ 보λ₯Ό μΊ‘μννμ¬, μμ€ν
μ λ€λ₯Έ λΆλΆκ³Όμ μμ‘΄μ±μ μ€μ΄λ λ° μ μ©ν©λλ€. Factory Pattern (ν©ν 리 ν¨ν΄) ν©ν 리 ν¨ν΄μ κ°μ²΄λ₯Ό μμ±νκΈ° μν μΈν°νμ΄μ€λ₯Ό μ μνκ³ , μ΄λ€ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±ν μ§λ μλΈν΄λμ€κ° κ²°μ νκ² ν©λλ€. μ΄λ₯Ό ν΅ν΄ κ°μ²΄ μμ±μ μν μ½λμ μ¬μ©μ μν μ½λμ λΆλ¦¬κ° κ°λ₯ν΄μ§λλ€. ν©ν 리 ν¨ν΄μ ν¬κ² μΈ κ°μ§λ‘ λλ©λλ€. Simple Factory (λ¨μ ν©ν 리) λ¨μ ν©ν 리λ ν©ν 리 λ©μλλ₯Ό ..
πΊοΈ Design Pattern
Object-Oriented Programming (κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°, OOP)μ μ΄ν΄ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°(Object-Oriented Programming, OOP)μ μ€μΈκ³μ μ¬λ¬Όμ΄λ κ°λ
μ κ°μ²΄λ‘ λͺ¨λΈλ§νμ¬ μννΈμ¨μ΄λ₯Ό κ°λ°νλ νλ‘κ·Έλλ° ν¨λ¬λ€μμ
λλ€. μ΄ μ κ·Ό λ°©μμ λ°μ΄ν°(μμ±)μ κ·Έ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ° νμν κΈ°λ₯(ν¨μ λλ λ©μλ)μ νλμ λ¨μλ‘ λ¬Άμ΄μ μκ°ν©λλ€. μλ₯Ό λ€μ΄μ CarλΌλ κ°μ²΄κ° μμλ? μμ±: fuel: μ°¨λμ μ°λ£ μ, speed: μ°¨λμ νμ¬ μλ, steering wheel: νΈλ€μ μμΉ, coordinate: μ°¨λμ νμ¬ μμΉ ν¨μ: accelerate(): μ°¨λμ μλλ₯Ό μ¦κ°μν΅λλ€. takeLeft(): μ°¨λμ μΌμͺ½μΌλ‘ μ‘°ν₯ν©λλ€. takeRight(): ..
πΊοΈ Design Pattern
What is UML? UML(Unified Modeling Language, ν΅ν© λͺ¨λΈλ§ μΈμ΄)λ μμ€ν
μ ꡬ쑰μ λμμ μκ°ννκ³ , μ¬μ(specification)μ λ¬Έμννλ λ° μ¬μ©λλ νμ€νλ λͺ¨λΈλ§ μΈμ΄μ
λλ€. μμ€ν
μ μκ°ν νκ±°λ μμ€ν
μ μ¬μ, μ€κ³λ₯Ό λ¬Έμν νκΈ° μν νν λ°©λ²μ
λλ€. ν΅ν© λͺ¨λΈλ§ μΈμ΄λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° μννΈμ¨μ΄ μ§μ μμ€ν
μ κ°λ°ν λ μ°μΆλ¬Όμ λͺ
μΈν, μκ°ν, λ¬Έμνν λ μ¬μ©ν©λλ€. μΌλ°μ μΌλ‘ UMLμ λ²μλ λ§€μ° λμ§λ§, μ¬κΈ°μλ ν΄λμ€ λ€μ΄μ΄κ·Έλ¨ λ° μνμ€ λ€μ΄μ΄κ·Έλ¨μ λν΄μλ§ μ€λͺ
ν΄ λ³΄κ² μ΅λλ€. Code Patternλ€μ ννν λλ μ μ©ν©λλ€. Class Diagram: ν΄λμ€μ κ³μΈ΅ κ΄κ³ ν΄λμ€ λ€μ΄μ΄κ·Έλ¨μ μμ€ν
μ μ μ ꡬ쑰λ₯Ό λνλ΄λ UML ꡬ쑰..
πΊοΈ Design Pattern
Solid Principles (μ리λ μμΉ) SOLID μμΉμ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°κ³Ό μννΈμ¨μ΄ μμ§λμ΄λ§μμ μ’μ μ½λ μ€κ³λ₯Ό μν λ€μ― κ°μ§ κΈ°λ³Έμ μΈ μμΉμ λ§ν©λλ€. μ΄ μμΉλ€μ μ½λμ μ μ§λ³΄μμ±μ ν₯μμν€κ³ , νμ₯μ±μ μ©μ΄νκ² νλ©°, 볡μ‘μ±μ κ΄λ¦¬νλ λ° λμμ μ€λλ€. 5κ°μ μμΉμ΄ μμ΅λλ€. S - Single Responsibility Principle (λ¨μΌ μ±
μ μμΉ) κ° ν΄λμ€λ νλμ μ±
μλ§μ κ°μ ΈμΌ ν©λλ€. μ¦, μμ€ν
μμ λ³κ²½μ΄ νμν ν κ°μ§ μ΄μ λ§μ κ°μ§κ³ μμ΄μΌ ν©λλ€. μ΄ μμΉμ μ½λμ μ¬μ¬μ©μ±μ λμ΄κ³ , λ³κ²½μ λν μ μ°μ±μ μ¦κ°μν΅λλ€. O - Open/Closed Principle (κ°λ°©/νμ μμΉ) μννΈμ¨μ΄μ μν°ν°(ν΄λμ€, λͺ¨λ, ν¨μ λ±)λ νμ₯μ λν΄μλ μ΄..
πΊοΈ Design Pattern
What is Design Pattern? λμμΈ ν¨ν΄μ μννΈμ¨μ΄ 곡νμμ μΌλ°μ μΈ λ¬Έμ λ€μ λν λ°λ³΅μ μ΄κ³ μ¬μ¬μ© κ°λ₯ν ν΄κ²°μ±
μ μ 곡νλ νμνλ λ°©λ²λ‘ μ
λλ€. μ΄λ¬ν ν¨ν΄λ€μ κ°λ°μλ€μ΄ νΉμ μν©μ΄λ λ¬Έμ μ λν΄ ν¨κ³Όμ μΌλ‘ λμν μ μλλ‘ λμμ€λλ€. λμμΈ ν¨ν΄μ μ£Όλ‘ κ°μ²΄ μ§ν₯ μννΈμ¨μ΄ μ€κ³μ μ μ©λλ©°, μ½λμ μ¬μ¬μ©μ±, μ μ°μ±, νμ₯μ±μ λμ΄λ λ° λμμ΄ λ©λλ€. λμμΈ ν¨ν΄μ κ·μΉμ΄ μλλ€. μΈμ΄ μ’
μμ μ΄μ§ μμ΅λλ€. νλ μ μν¬ κ°λ°μ μ μ©λ μ μμ΅λλ€. νΉμ μμμ μ’
μμ μ΄μ§ μκ³ μΌλ°μ μΌλ‘ νμ©ν μ μμ΅λλ€. μ’μ μ€κ³μ λν μ μμ΄κΈ°λ ν©λλ€. λμμΈ ν¨ν΄μ ν΄λμ€ λΌμ΄λΈλ¬λ¦¬κ° μλλ€. νλ‘κ·Έλλ° μΈμ΄(C++, Java, Python λ±)λ₯Ό μ¬μ©ν λ ν΄λμ€λ€μ΄ λͺ¨μΈ λΌμ΄λΈλ¬..