Skip to content

Latest commit

Β 

History

History
39 lines (22 loc) Β· 2.84 KB

Abstract_Factory_Pattern.md

File metadata and controls

39 lines (22 loc) Β· 2.84 KB

Abstract Factory Pattern

Abstract Factory Pattern (좔상 νŒ©ν† λ¦¬ νŒ¨ν„΄)

Abstract-Factory

ν•΄λ‹Ή νŒ¨ν„΄μ€ νŒ©ν† λ¦¬ λ©”μ†Œλ“œ νŒ¨ν„΄κ³Ό ν•¨κ»˜ λ³΄λŠ” 것이 μ’‹λ‹€.

νŒ©ν† λ¦¬ λ©”μ†Œλ“œ νŒ¨ν„΄μ„ μ΄μš©ν•˜λ©΄ μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 μ±…μž„μ„ λΆ„λ¦¬ν•˜μ—¬ μƒˆλ‘œμš΄ μ„œλΈŒνƒ€μž…μ΄ μΆ”κ°€λ˜μ–΄λ„ νŒ©ν† λ¦¬ 클래슀만 μˆ˜μ •λ  뿐 νŒ©ν† λ¦¬ 객체λ₯Ό μ΄μš©ν•˜λŠ” ν΄λž˜μŠ€λŠ” μˆ˜μ •λ˜μ§€ μ•ŠλŠ”λ‹€.

좔상 νŒ©ν† λ¦¬ νŒ¨ν„΄μ€ νŒ©ν† λ¦¬ λ©”μ†Œλ“œμ—μ„œμ˜ Productκ°€ μ—¬λŸ¬ κ΅¬μ„±μš”μ†Œλ‘œ μ΄λ£¨μ–΄μ§ˆ λ•Œ, 이 ꡬ성 μš”μ†Œλ“€μ˜ 쑰합체λ₯Ό λ§Œλ“œλŠ” νŒ©ν† λ¦¬λ₯Ό μ •μ˜ν•˜λŠ” 것이닀.

ꡬ성 μš”μ†Œ

  • AbstractFactory - Productλ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ 클래슀λ₯Ό μΆ”μƒν™”ν•œ 것. 기쑴에 Product의 μ„œλΈŒνƒ€μž…μ„ μƒμ„±ν•˜λ˜ 객체(Client)κ°€ 이에 μ˜μ‘΄ν•˜κ²Œ λ˜μ–΄ ꡬ체적인 것이 μ•„λ‹Œ 좔상적인 것에 μ˜μ‘΄ν•˜λ„λ‘ 섀계λ₯Ό λ³€κ²½ν•œλ‹€.
  • ConcreteFactory - 각 (ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”κ΅¬ν•˜λŠ”) μ™„μ„±λ¬Ό λ‚΄ λΆ€ν’ˆλ“€μ„ λ§Œλ“€κ³  μ‘°ν•©ν•˜κΈ° μœ„ν•œ νŒ©ν† λ¦¬
  • AbstractProduct - 각 μ™„μ„±λ¬Ό λ‚΄ λΆ€ν’ˆλ“€
  • Product - 각 λΆ€ν’ˆλ“€μ˜ μ„œλΈŒνƒ€μž…

νŠΉμ§•

  • 사싀상 νŒ©ν† λ¦¬ λ©”μ†Œλ“œ νŒ¨ν„΄μ„ ν•œ 번 더 μΊ‘μŠν™”ν•˜λŠ” 과정에 가깝닀.
  • 각 νŒ©ν† λ¦¬μ˜ μΈμŠ€ν„΄μŠ€λŠ” ν•˜λ‚˜μ”©λ§Œ μƒμ„±ν•˜λ©΄ 되기 λ•Œλ¬Έμ— 싱글톀과 ν•¨κ»˜ 쓰일 λ•Œκ°€ λ§Žλ‹€.

νŒ©ν† λ¦¬ λ©”μ†Œλ“œμ™€ 좔상 νŒ©ν† λ¦¬

μ‚Όμ„±, LG 컴퓨터λ₯Ό 제쑰, νŒλ§€ν•˜λŠ” 컴퓨터 제쑰 μ—…μ²΄μ—μ„œ νŒ©ν† λ¦¬ λ©”μ†Œλ“œ, 좔상 νŒ©ν† λ¦¬ νŒ¨ν„΄μ„ μ μš©ν•œλ‹€κ³  ν•˜μž.

κ·Έλ ‡λ‹€λ©΄ μ–΄λ–€ νšŒμ‚¬ μ»΄ν“¨ν„°μ˜ 주문이 듀어왔냐에 따라 λΆ„κΈ°λ₯Ό λ‚˜λˆ„μ–΄ μ‚Όμ„± λ˜λŠ” LG μ»΄ν“¨ν„°μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό 생성해야 ν•œλ‹€. μ—¬κΈ°μ„œ 관련이 μ—†λŠ” 객체가 컴퓨터 μ„œλΈŒνƒ€μž…μ˜ μΆ”κ°€/μ œκ±°μ— 영ν–₯을 받지 μ•ŠκΈ° μœ„ν•΄ μΈμŠ€ν„΄μŠ€ 생성 및 λ°˜ν™˜ μ±…μž„μ„ λΆ„λ¦¬ν•˜λŠ” νŒ©ν† λ¦¬ λ©”μ†Œλ“œ νŒ¨ν„΄μ΄ 적용될 수 μžˆλ‹€.

λ˜ν•œ, μ»΄ν“¨ν„°μ—λŠ” λͺ¨λ‹ˆν„°, ν‚€λ³΄λ“œ, λ§ˆμš°μŠ€μ™€ 같은 λΆ€ν’ˆμ΄ ν¬ν•¨λ˜μ–΄μ•Ό ν•œλ‹€. λ§ˆμ°¬κ°€μ§€λ‘œ 각 λΆ€ν’ˆ μš”μ†Œμ— λŒ€ν•΄ νŒ©ν† λ¦¬ λ©”μ†Œλ“œ νŒ¨ν„΄μ„ μ΄μš©ν•˜λŠ” κ²½μš°μ—λŠ” λͺ¨λ‹ˆν„° νŒ©ν† λ¦¬, ν‚€λ³΄λ“œ νŒ©ν† λ¦¬, 마우슀 νŒ©ν† λ¦¬λ₯Ό 생성해야 ν•œλ‹€.

κ·ΈλŸ¬λ‚˜ 사싀 컴퓨터λ₯Ό κ΅¬μ„±ν•˜λŠ” λΆ€ν’ˆμ€ μ €κΈ°μ„œ 끝이 μ•„λ‹ˆλ‹€. μˆ˜λ§Žμ€ λΆ€ν’ˆμ— λŒ€ν•΄ λͺ¨λ‘ νŒ©ν† λ¦¬λ₯Ό λ§Œλ“€κ²Œ 되면 μ΄λŠ” μ½”λ“œλ₯Ό λ³΅μž‘ν•˜κ²Œ λ§Œλ“€κ³ , νŒ©ν† λ¦¬ 클래슀의 λΉˆλ²ˆν•œ μˆ˜μ •μ„ μ•ΌκΈ°ν•œλ‹€.

μ—¬κΈ°μ„œ 좔상 νŒ©ν† λ¦¬ λ©”μ†Œλ“œ νŒ¨ν„΄μ„ μ μš©ν•˜μ—¬ μ‚Όμ„± μ»΄ν“¨ν„°μ˜ λΆ€ν’ˆμ„ 생성, μ‘°λ¦½ν•˜λŠ” νŒ©ν† λ¦¬μ™€ LG μ»΄ν“¨ν„°μ˜ λΆ€ν’ˆμ„ 생성, μ‘°λ¦½ν•˜λŠ” νŒ©ν† λ¦¬λ₯Ό λ§Œλ“  λ’€ μ—¬κΈ°μ„œ λΆ€ν’ˆμ„ μƒμ„±ν•˜κ³  μ‘°λ¦½ν•œλ‹€.

μ΅œμ’… 클래슀 λ‹€μ΄μ–΄κ·Έλž¨μ€ λ‹€μŒκ³Ό 같이 ν˜•μ„±λœλ‹€.

Abstract-Factory-Example