μŠ€νŠΈλž˜ν‹°μ§€ νŒ¨ν„΄(μ „λž΅ νŒ¨ν„΄)
μ „λž΅ νŒ¨ν„΄μ€ μ•Œκ³ λ¦¬μ¦˜ κ΅°(familly)을 μ •μ˜ν•˜κ³  각 μ•Œκ³ λ¦¬μ¦˜μ„ μΊ‘μŠν™”ν•˜μ—¬ μƒν˜Έ κ΅ν™˜ν•  수 μžˆλ„λ‘ ν•˜λŠ” λ™μž‘ λ””μžμΈ νŒ¨ν„΄μž…λ‹ˆλ‹€.

이λ₯Ό 톡해 λŸ°νƒ€μž„μ— μ•Œκ³ λ¦¬μ¦˜μ„ 선택할 수 μžˆμœΌλ―€λ‘œ μ½”λ“œμ˜ μœ μ—°μ„±κ³Ό 적응성을 높일 수 μžˆμŠ΅λ‹ˆλ‹€.


(μ—­μ£Ό:원문은 a family of algorithms, 즉 λΉ„μŠ·ν•œ μ•Œκ³ λ¦¬μ¦˜λΌλ¦¬ λ¬ΆλŠ”λ‹€λŠ” 말)

핡심 κ°œλ…:
κ΄€λ ¨ μ•Œκ³ λ¦¬μ¦˜ μΊ‘μŠν™”
μ•Œκ³ λ¦¬μ¦˜μ„ μƒν˜Έ κ΅ν™˜ κ°€λŠ₯ν•˜κ²Œ λ§Œλ“€κΈ°


μž₯점:
μ•Œκ³ λ¦¬μ¦˜ μ„ νƒμ˜ μœ μ—°μ„± ν–₯상
μ•Œκ³ λ¦¬μ¦˜μ„ μ‰½κ²Œ ꡐ체할 수 있음
μ‘°κ±΄ν•˜μ— μ½”λ“œλ³΅μž‘μ„± κ°μ†Œ


μ™œ μŠ€νŠΈλž˜ν‹°μ§€ νŒ¨ν„΄μ„ μ¨μ•Όν•˜λŠ”κ°€?

μ „λž΅ νŒ¨ν„΄μ€ νŠΉμ • μž‘μ—…μ— λŒ€ν•΄ λ‹€μ–‘ν•œ μ•Œκ³ λ¦¬μ¦˜μ΄λ‚˜ λ™μž‘μ„ κ΅¬ν˜„ν•΄μ•Ό ν•˜κ³  λŸ°νƒ€μž„ 쀑에 μ‰½κ²Œ κ΅μ²΄ν•˜λ €λŠ” 상황에 μ΄μƒμ μž…λ‹ˆλ‹€.

이 νŒ¨ν„΄μ„ μ‚¬μš©ν•˜λ©΄ μƒˆλ‘œμš΄ λ™μž‘μ„ 더 μ‰½κ²Œ μΆ”κ°€ν•  수 있고 μ½”λ“œλ₯Ό κΉ”λ”ν•˜κ³  μœ μ§€ κ΄€λ¦¬ν•˜κΈ° μ‰½κ²Œ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.





νŒ©ν† λ¦¬ νŒ¨ν„΄(곡μž₯ νŒ¨ν„΄)
νŒ©ν† λ¦¬ νŒ¨ν„΄μ€ 슈퍼클래슀(SuperClass)μ—μ„œ 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•˜μ—¬ μ„œλΈŒν΄λž˜μŠ€κ°€ μΈμŠ€ν„΄μŠ€ν™”ν•  클래슀λ₯Ό κ²°μ •ν•  수 μžˆλ„λ‘ ν•˜λŠ” 생성 λ””μžμΈ νŒ¨ν„΄μž…λ‹ˆλ‹€.

이 νŒ¨ν„΄μ€ κ΄€λ ¨ 클래슀 집합이 있고, 생성할 클래슀λ₯Ό λͺ…ν™•νžˆ κΈ°μž…ν•˜μ§€ μ•Šκ³ , ν•΄λ‹Ή 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λ €λŠ” κ²½μš°μ— μœ μš©ν•©λ‹ˆλ‹€.

(μ—­μ£Ό: μŠˆνΌν΄λž˜μŠ€λŠ” λΆ€λͺ¨ 클래슀라고 보면됨. λ‹€λ₯Έ ν΄λž˜μŠ€κ°€ νŒŒμƒλ˜λŠ” 클래슀)

핡심 κ°œλ…:
객체 생성을 μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€ μ •μ˜
μΈμŠ€ν„΄μŠ€ν™”ν•  클래슀λ₯Ό μ„œλΈŒν΄λž˜μŠ€κ°€ κ²°μ •ν•˜λ„λ‘ 함

μž₯점:

객체 생성 μΊ‘μŠν™”
λŠμŠ¨ν•œ κ²°ν•© 촉진
μ½”λ“œ μž¬μ‚¬μš©μ„± 및 ν™•μž₯μ„± 지원


μ™œ νŒ©ν† λ¦¬ νŒ¨ν„΄μ„ μ‚¬μš©ν•˜λŠ”κ°€?
νŒ©ν† λ¦¬ νŒ¨ν„΄μ€ 곡톡 μΈν„°νŽ˜μ΄μŠ€λ‚˜ 베이슀 클래슀λ₯Ό κ³΅μœ ν•˜λŠ” μ μ΄λ‚˜ μ•„μ΄ν…œκ³Ό 같은 λ‹€μ–‘ν•œ μœ ν˜•μ˜ 객체λ₯Ό λ§Œλ“€μ–΄μ•Ό ν•  λ•Œ 특히 μœ μš©ν•©λ‹ˆλ‹€.

객체 생성 ν”„λ‘œμ„ΈμŠ€λ₯Ό μΊ‘μŠν™”ν•˜μ—¬ μ½”λ“œλ₯Ό 더 μ‰½κ²Œ μœ μ§€ κ΄€λ¦¬ν•˜κ³  ν™•μž₯ν•  수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.

λ°μ½”λ ˆμ΄ν„° νŒ¨ν„΄

λ°μ½”λ ˆμ΄ν„° νŒ¨ν„΄μ€ ꡬ쑰λ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³ λ„ 객체에 μƒˆλ‘œμš΄ μ±…μž„μ„ λ™μ μœΌλ‘œ λΆ€μ—¬ν•  수 μžˆλŠ” ꡬ쑰적 λ””μžμΈ νŒ¨ν„΄μž…λ‹ˆλ‹€.

이 νŒ¨ν„΄μ€ 같은 클래슀의 λ‹€λ₯Έ μΈμŠ€ν„΄μŠ€μ— 영ν–₯을 μ£Όμ§€ μ•Šκ³  객체에 κΈ°λŠ₯을 μΆ”κ°€ν•΄μ•Ό ν•  λ•Œ 특히 μœ μš©ν•©λ‹ˆλ‹€.

핡심 κ°œλ…:
객체에 λ™μ μœΌλ‘œ μƒˆλ‘œμš΄ μ±…μž„(responsibilities) λΆ€μ—¬ν•˜κΈ°
원본 객체λ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³  μœ μ§€


μž₯점:
λ‹€λ₯Έ μΈμŠ€ν„΄μŠ€μ— 영ν–₯을 μ£Όμ§€ μ•Šκ³  κΈ°λŠ₯ μΆ”κ°€
μ½”λ“œ μž¬μ‚¬μš©μ„± μž₯λ €
μ„œλΈŒν΄λž˜μ‹±μ— λŒ€ν•œ λŒ€μ•ˆ 제곡(Provide an alternative to subclassing)


(μ—­μ£Ό:μ„œλΈŒν΄λž˜μ‹±μ΄ 뭘 μ˜λ―Έν•˜λŠ”μ§€ λͺ°λΌμ„œ 원문 κ·ΈλŒ€λ‘œ κ°€μ Έμ˜΄)


μ™œ λ°μ½”λ ˆμ΄ν„°λ₯Ό μ¨μ•Όν•˜λŠ”κ°€?
λ°μ½”λ ˆμ΄ν„° νŒ¨ν„΄μ€ μ›λž˜ ꡬ쑰λ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ λ‹€λ₯Έ μΈμŠ€ν„΄μŠ€μ— 영ν–₯을 μ£Όμ§€ μ•Šκ³  객체의 κΈ°λŠ₯을 ν™•μž₯ν•˜κ³ μž ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

특히 λŸ°νƒ€μž„μ— 객체에 κΈ°λŠ₯을 μΆ”κ°€ν•˜κ³  μ½”λ“œ μž¬μ‚¬μš©μ„±μ„ λ†’μ΄λŠ” 데 μœ μš©ν•©λ‹ˆλ‹€.




μŠ€ν…Œμ΄νŠΈ νŒ¨ν„΄
μƒνƒœ νŒ¨ν„΄μ€ λ‚΄λΆ€ μƒνƒœκ°€ 변경될 λ•Œ 객체의 λ™μž‘μ„ λ³€κ²½ν•  수 μžˆλ„λ‘ ν•˜λŠ” λ™μž‘ λ””μžμΈ νŒ¨ν„΄μž…λ‹ˆλ‹€.

이 νŒ¨ν„΄μ€ μœ ν•œ μƒνƒœ λ¨Έμ‹ (FSM,finite state machines)을 κΉ”λ”ν•˜κ³  μœ μ§€ κ΄€λ¦¬ν•˜κΈ° μ‰¬μš΄ λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν•˜λŠ” 데 특히 μœ μš©ν•©λ‹ˆλ‹€.

핡심 κ°œλ…:
μƒνƒœλ₯Ό λ³„λ„μ˜ 객체둜 μΊ‘μŠν™”
ν˜„μž¬ μƒνƒœμ— 따라 객체 λ™μž‘ λ³€κ²½


μž₯점:
μƒνƒœ κ°„μ˜ λŠμŠ¨ν•œ κ²°ν•© 촉진
λ³΅μž‘ν•œ μƒνƒœ 쒅속 둜직 κ°„μ†Œν™”
μƒˆλ‘œμš΄ μƒνƒœλ₯Ό μ‰½κ²Œ μΆ”κ°€ν•  수 있음


μ™œ μŠ€ν…Œμ΄νŠΈνŒ¨ν„΄μ„ μ‚¬μš©ν•΄μ•Όν•˜λŠ”κ°€?
μŠ€ν…Œμ΄νŠΈ νŒ¨ν„΄μ€ 캐릭터 AIλ‚˜ κ²Œμž„ μƒνƒœ μ „ν™˜κ³Ό 같이 λ³΅μž‘ν•œ μƒνƒœ 쒅속적 λ™μž‘μ„ 관리할 λ•Œ 특히 μœ μš©ν•©λ‹ˆλ‹€.

각 μƒνƒœλ₯Ό λ³„λ„μ˜ 객체둜 μΊ‘μŠν™”ν•˜λ©΄ μ½”λ“œκ°€ 더 λͺ¨λ“ˆν™”λ˜κ³  μœ μ§€ 관리가 μ‰¬μ›Œμ§€λ©° μƒˆλ‘œμš΄ μƒνƒœλ‘œ ν™•μž₯ν•˜κΈ°κ°€ 더 μ‰¬μ›Œμ§‘λ‹ˆλ‹€.






κ²°λ‘ 
λ””μžμΈ νŒ¨ν„΄μ„ λ§ˆμŠ€ν„°ν•˜λŠ” 것은 λͺ¨λ“  κ²Œμž„ κ°œλ°œμžμ—κ²Œ ν•„μˆ˜μ μΈ 기술이며, 특히 Unity둜 μž‘μ—…ν•  λ•Œ λ”μš± κ·Έλ ‡μŠ΅λ‹ˆλ‹€.

7κ°€μ§€ λ””μžμΈ νŒ¨ν„΄μ„ μ΄ν•΄ν•˜κ³  κ΅¬ν˜„ν•˜λ©΄ μ½”λ“œλ₯Ό κ΄€λ¦¬ν•˜κ³ , ν™•μž₯ κ°€λŠ₯ν•˜κ³  μœ μ§€ κ΄€λ¦¬ν•˜κΈ° μ‰¬μš΄ κ²Œμž„μ„ λ§Œλ“€κ³ , 일반적인 κ²Œμž„ 개발 과제λ₯Ό ν•΄κ²°ν•  수 μžˆλŠ” μ—­λŸ‰μ„ κ°–μΆ”κ²Œ λ©λ‹ˆλ‹€.

μ—°μŠ΅κ³Ό κ²½ν—˜μ„ 톡해 μ΄λŸ¬ν•œ νŒ¨ν„΄μ„ ν”„λ‘œμ νŠΈμ— μ›ν™œν•˜κ²Œ ν†΅ν•©ν•˜μ—¬ 개발 ν”„λ‘œμ„ΈμŠ€λ₯Ό λ”μš± 효율적이고 즐겁게 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.