πŸ—ΊοΈ Design Pattern

πŸ—ΊοΈ Design Pattern

[Design Pattern] Factory Method Pattern - νŒ©ν† λ¦¬ λ©”μ„œλ“œ νŒ¨ν„΄

Factory Method Pattern νŒ©ν† λ¦¬ λ©”μ„œλ“œ νŒ¨ν„΄μ€ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λŠ” 방법을 μƒμœ„ 클래슀 μΈ‘μ—μ„œ κ²°μ •ν•˜μ§€λ§Œ, ꡬ체적인 μΈμŠ€ν„΄μŠ€μ˜ μœ ν˜•κΉŒμ§€λŠ” κ²°μ •ν•˜μ§€ μ•ŠλŠ” λ””μžμΈ νŒ¨ν„΄μž…λ‹ˆλ‹€. λŒ€μ‹ , ꡬ체적인 λ‚΄μš©μ€ λͺ¨λ‘ ν•˜μœ„ 클래슀 μΈ‘μ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€. 이λ₯Ό 톡해 μΈμŠ€ν„΄μŠ€ 생성을 μœ„ν•œ 골격과 μ‹€μ œ μΈμŠ€ν„΄μŠ€ μƒμ„±μ˜ 클래슀λ₯Ό λΆ„λ¦¬ν•˜μ—¬ 생각할 수 μžˆμŠ΅λ‹ˆλ‹€. μƒμœ„ ν΄λž˜μŠ€μ—μ„œ μΈμŠ€ν„΄μŠ€ 생성 방법 κ²°μ •: μƒμœ„ ν΄λž˜μŠ€μ—μ„œλŠ” μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ 좔상 λ©”μ„œλ“œ(νŒ©ν† λ¦¬ λ©”μ„œλ“œ)λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. 이 λ©”μ„œλ“œλŠ” μ‹€μ œλ‘œ μ–΄λ–€ μœ ν˜•μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό 생성할지 κ²°μ •ν•˜μ§€ μ•Šκ³ , κ·Έ 결정은 ν•˜μœ„ ν΄λž˜μŠ€μ— μœ„μž„λ©λ‹ˆλ‹€. ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ ꡬ체적인 λ‚΄μš© μˆ˜ν–‰: μ‹€μ œ μΈμŠ€ν„΄μŠ€ 생성에 κ΄€λ ¨λœ ꡬ체적인 λ‘œμ§μ€ ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€. 각 ν•˜μœ„ ν΄λž˜μŠ€λŠ” 상..

πŸ—ΊοΈ Design Pattern

[Design Pattern] Factory Pattern - νŒ©ν† λ¦¬ νŒ¨ν„΄

Creation Design Pattern (생성 λ””μžμΈ νŒ¨ν„΄) 생성 λ””μžμΈ νŒ¨ν„΄μ€ 객체 생성에 κ΄€λ ¨λœ λ””μžμΈ νŒ¨ν„΄μ„ λ§ν•©λ‹ˆλ‹€. 이 νŒ¨ν„΄λ“€μ€ 객체의 생성 과정을 μΊ‘μŠν™”ν•˜μ—¬, 객체 생성을 더 μœ μ—°ν•˜κ²Œ λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€. 주둜 객체 생성 둜직이 λ‹¨μˆœν•˜μ§€ μ•Šκ±°λ‚˜, 객체 생성과 κ΄€λ ¨λœ 정보λ₯Ό μΊ‘μŠν™”ν•˜μ—¬, μ‹œμŠ€ν…œμ˜ λ‹€λ₯Έ λΆ€λΆ„κ³Όμ˜ μ˜μ‘΄μ„±μ„ μ€„μ΄λŠ” 데 μœ μš©ν•©λ‹ˆλ‹€. Factory Pattern (νŒ©ν† λ¦¬ νŒ¨ν„΄) νŒ©ν† λ¦¬ νŒ¨ν„΄μ€ 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ •μ˜ν•˜κ³ , μ–΄λ–€ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν• μ§€λŠ” μ„œλΈŒν΄λž˜μŠ€κ°€ κ²°μ •ν•˜κ²Œ ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 객체 생성을 μœ„ν•œ μ½”λ“œμ™€ μ‚¬μš©μ„ μœ„ν•œ μ½”λ“œμ˜ 뢄리가 κ°€λŠ₯ν•΄μ§‘λ‹ˆλ‹€. νŒ©ν† λ¦¬ νŒ¨ν„΄μ€ 크게 μ„Έ κ°€μ§€λ‘œ λ‚˜λ‰©λ‹ˆλ‹€. Simple Factory (λ‹¨μˆœ νŒ©ν† λ¦¬) λ‹¨μˆœ νŒ©ν† λ¦¬λŠ” νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό ..

πŸ—ΊοΈ Design Pattern

[Design Pattern] Object-Oriented Programming (OOP)

Object-Oriented Programming (객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°, OOP)의 이해 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°(Object-Oriented Programming, OOP)은 μ‹€μ„Έκ³„μ˜ μ‚¬λ¬Όμ΄λ‚˜ κ°œλ…μ„ 객체둜 λͺ¨λΈλ§ν•˜μ—¬ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μž…λ‹ˆλ‹€. 이 μ ‘κ·Ό 방식은 데이터(속성)와 κ·Έ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 데 ν•„μš”ν•œ κΈ°λŠ₯(ν•¨μˆ˜ λ˜λŠ” λ©”μ†Œλ“œ)을 ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ λ¬Άμ–΄μ„œ μƒκ°ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄μ„œ CarλΌλŠ” 객체가 μžˆμ„λ•Œ? 속성: fuel: μ°¨λŸ‰μ˜ μ—°λ£Œ μ–‘, speed: μ°¨λŸ‰μ˜ ν˜„μž¬ 속도, steering wheel: ν•Έλ“€μ˜ μœ„μΉ˜, coordinate: μ°¨λŸ‰μ˜ ν˜„μž¬ μœ„μΉ˜ ν•¨μˆ˜: accelerate(): μ°¨λŸ‰μ˜ 속도λ₯Ό μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€. takeLeft(): μ°¨λŸ‰μ„ μ™Όμͺ½μœΌλ‘œ μ‘°ν–₯ν•©λ‹ˆλ‹€. takeRight(): ..

πŸ—ΊοΈ Design Pattern

[Design Pattern] Unified Modeling Language (UML)

What is UML? UML(Unified Modeling Language, 톡합 λͺ¨λΈλ§ μ–Έμ–΄)λŠ” μ‹œμŠ€ν…œμ˜ ꡬ쑰와 λ™μž‘μ„ μ‹œκ°ν™”ν•˜κ³ , 사양(specification)을 λ¬Έμ„œν™”ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” ν‘œμ€€ν™”λœ λͺ¨λΈλ§ μ–Έμ–΄μž…λ‹ˆλ‹€. μ‹œμŠ€ν…œμ„ μ‹œκ°ν™” ν•˜κ±°λ‚˜ μ‹œμŠ€ν…œμ˜ 사양, 섀계λ₯Ό λ¬Έμ„œν™” ν•˜κΈ° μœ„ν•œ ν‘œν˜„ λ°©λ²•μž…λ‹ˆλ‹€. 톡합 λͺ¨λΈλ§ μ–Έμ–΄λŠ” 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° μ†Œν”„νŠΈμ›¨μ–΄ 집얍 μ‹œμŠ€ν…œμ„ κ°œλ°œν•  λ•Œ μ‚°μΆœλ¬Όμ„ λͺ…μ„Έν™”, μ‹œκ°ν™”, λ¬Έμ„œν™”ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€. 일반적으둜 UML의 λ²”μœ„λŠ” 맀우 λ„“μ§€λ§Œ, μ—¬κΈ°μ„œλŠ” 클래슀 λ‹€μ΄μ–΄κ·Έλž¨ 및 μ‹œν€€μŠ€ λ‹€μ΄μ–΄κ·Έλž¨μ— λŒ€ν•΄μ„œλ§Œ μ„€λͺ…ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. Code Pattern듀을 ν‘œν˜„ν•  λ•Œλ„ μœ μš©ν•©λ‹ˆλ‹€. Class Diagram: ν΄λž˜μŠ€μ™€ 계측 관계 클래슀 λ‹€μ΄μ–΄κ·Έλž¨μ€ μ‹œμŠ€ν…œμ˜ 정적 ꡬ쑰λ₯Ό λ‚˜νƒ€λ‚΄λŠ” UML ꡬ쑰..

πŸ—ΊοΈ Design Pattern

[Design Pattern] Solid Principles (μ†”λ¦¬λ“œ 원칙)

Solid Principles (μ†”λ¦¬λ“œ 원칙) SOLID 원칙은 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°κ³Ό μ†Œν”„νŠΈμ›¨μ–΄ μ—”μ§€λ‹ˆμ–΄λ§μ—μ„œ 쒋은 μ½”λ“œ 섀계λ₯Ό μœ„ν•œ λ‹€μ„― 가지 기본적인 원칙을 λ§ν•©λ‹ˆλ‹€. 이 원칙듀은 μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜μ„±μ„ ν–₯μƒμ‹œν‚€κ³ , ν™•μž₯성을 μš©μ΄ν•˜κ²Œ ν•˜λ©°, λ³΅μž‘μ„±μ„ κ΄€λ¦¬ν•˜λŠ” 데 도움을 μ€λ‹ˆλ‹€. 5개의 원칙이 μžˆμŠ΅λ‹ˆλ‹€. S - Single Responsibility Principle (단일 μ±…μž„ 원칙) 각 ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ˜ μ±…μž„λ§Œμ„ κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€. 즉, μ‹œμŠ€ν…œμ—μ„œ 변경이 ν•„μš”ν•œ ν•œ 가지 μ΄μœ λ§Œμ„ 가지고 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 이 원칙은 μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ 높이고, 변경에 λŒ€ν•œ μœ μ—°μ„±μ„ μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€. O - Open/Closed Principle (개방/폐쇄 원칙) μ†Œν”„νŠΈμ›¨μ–΄μ˜ μ—”ν‹°ν‹°(클래슀, λͺ¨λ“ˆ, ν•¨μˆ˜ λ“±)λŠ” ν™•μž₯에 λŒ€ν•΄μ„œλŠ” μ—΄..

πŸ—ΊοΈ Design Pattern

[Design Pattern] Design Pattern

What is Design Pattern? λ””μžμΈ νŒ¨ν„΄μ€ μ†Œν”„νŠΈμ›¨μ–΄ κ³΅ν•™μ—μ„œ 일반적인 λ¬Έμ œλ“€μ— λŒ€ν•œ 반볡적이고 μž¬μ‚¬μš© κ°€λŠ₯ν•œ 해결책을 μ œκ³΅ν•˜λŠ” ν˜•μ‹ν™”λœ λ°©λ²•λ‘ μž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ νŒ¨ν„΄λ“€μ€ κ°œλ°œμžλ“€μ΄ νŠΉμ • μƒν™©μ΄λ‚˜ λ¬Έμ œμ— λŒ€ν•΄ 효과적으둜 λŒ€μ‘ν•  수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€. λ””μžμΈ νŒ¨ν„΄μ€ 주둜 객체 지ν–₯ μ†Œν”„νŠΈμ›¨μ–΄ 섀계에 적용되며, μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±, μœ μ—°μ„±, ν™•μž₯성을 λ†’μ΄λŠ” 데 도움이 λ©λ‹ˆλ‹€. λ””μžμΈ νŒ¨ν„΄μ€ κ·œμΉ™μ΄ μ•„λ‹ˆλ‹€. μ–Έμ–΄ 쒅속적이지 μ•ŠμŠ΅λ‹ˆλ‹€. ν”„λ ˆμž„ μ›Œν¬ κ°œλ°œμ— 적용될 수 μžˆμŠ΅λ‹ˆλ‹€. νŠΉμ • μ˜μ—­μ— 쒅속적이지 μ•Šκ³  일반적으둜 ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 쒋은 섀계에 λŒ€ν•œ μ œμ•ˆμ΄κΈ°λ„ ν•©λ‹ˆλ‹€. λ””μžμΈ νŒ¨ν„΄μ€ 클래슀 λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ•„λ‹ˆλ‹€. ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄(C++, Java, Python λ“±)λ₯Ό μ‚¬μš©ν•  λ•Œ ν΄λž˜μŠ€λ“€μ΄ λͺ¨μΈ 라이브러..

Bigbread1129
'πŸ—ΊοΈ Design Pattern' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘ (3 Page)