관리 메뉴

λͺ©λ‘μ „체 κΈ€ (197)

JUINTINATION

μŠ€ν…Œμ΄νŠΈ(State) νŒ¨ν„΄

μŠ€ν…Œμ΄νŠΈ νŒ¨ν„΄μ΄λž€? μ‹œμŠ€ν…œμ˜ 각 μƒνƒœλ₯Ό 클래슀둜 λΆ„λ¦¬ν•˜κ³  각 ν΄λž˜μŠ€μ—μ„œ μˆ˜ν–‰ν•˜λŠ” ν–‰μœ„λ“€μ„ λ©”μ„œλ“œλ‘œ κ΅¬ν˜„ν•˜μ—¬ μ–΄λ–€ ν–‰μœ„λ₯Ό μˆ˜ν–‰ν•  λ•Œ μƒνƒœμ— ν–‰μœ„λ₯Ό μˆ˜ν–‰ν•˜λ„λ‘ μœ„μž„ν•˜λŠ” νŒ¨ν„΄μ΄λ‹€. μŠ€ν…Œμ΄νŠΈ νŒ¨ν„΄κ³Ό μŠ€νŠΈλž˜ν‹°μ§€ νŒ¨ν„΄ 곡톡점 ν–‰μœ„λ₯Ό 클래슀둜 μΊ‘μŠν™” μ—°κ΄€ 관계λ₯Ό μ΄μš©ν•΄ ν–‰μœ„λ₯Ό κ΅¬ν˜„ν•œ ν΄λž˜μŠ€μ— μ‹€μ œ μž‘μ—…μ„ μœ„μž„ μ‹€ν–‰ 쀑 ν–‰μœ„ λ³€κ²½ κ°€λŠ₯ 차이점 μŠ€νŠΈλž˜ν‹°μ§€ νŒ¨ν„΄ κΈ°λŠ₯ μˆ˜ν–‰ μ „λž΅μ„ μΊ‘μŠν™” Clientκ°€ Context에 μ‚¬μš©ν•  Strategy 지정 μŠ€ν…Œμ΄νŠΈ νŒ¨ν„΄ 객체의 μƒνƒœλ₯Ό μΊ‘μŠν™” Clientκ°€ Context의 Stateλ₯Ό 지정해주지 μ•ŠμŒ μœ„μ™€ 같은 μƒνƒœ λ¨Έμ‹  λ‹€μ΄μ–΄κ·Έλž¨μ„ κ°–λŠ” ν˜•κ΄‘λ“±μ΄ μžˆλ‹€κ³  ν•˜μž. 해석해보면 λ‹€μŒκ³Ό κ°™λ‹€. ν˜•κ΄‘λ“±μ€ 기본적으둜 OFF μƒνƒœμ—μ„œ μ‹œμž‘ν•œλ‹€. OFF μƒνƒœμ—μ„œ μ‚¬μš©μžκ°€ on λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ ON 상..

μŠ€νŠΈλž˜ν‹°μ§€(Strategy) νŒ¨ν„΄

μŠ€νŠΈλž˜ν‹°μ§€ νŒ¨ν„΄μ΄λž€? μ–΄λ–€ λͺ©μ μ„ λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ 일을 μˆ˜ν–‰ν•˜λŠ” 방식, λΉ„μ¦ˆλ‹ˆμŠ€ κ·œμΉ™, 문제λ₯Ό ν•΄κ²°ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ 등을 μ˜λ―Έν•˜λŠ” μ „λž΅μ„ μ‰½κ²Œ λ°”κΏ€ 수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” νŒ¨ν„΄μ΄λ‹€. ν”„λ‘œκ·Έλž¨μ—μ„œ μ „λž΅μ„ μ‹€ν–‰ν•  λ•ŒλŠ” μ‰½κ²Œ μ „λž΅μ„ λ°”κΏ”μ•Ό ν•  ν•„μš”κ°€ μžˆλŠ” κ²½μš°κ°€ 많이 λ°œμƒν•˜λŠ”λ° 특히 κ²Œμž„ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ κ²Œμž„ 캐릭터가 μžμ‹ μ΄ μ²˜ν•œ 상황에 따라 κ³΅κ²©μ΄λ‚˜ ν–‰λ™ν•˜λŠ” 방식을 λ°”κΎΈκ³  싢을 λ•Œ μŠ€νŠΈλž˜ν‹°μ§€ νŒ¨ν„΄μ€ 맀우 μœ μš©ν•˜κ²Œ 쓰인닀. λ‹€μŒκ³Ό 같이 λ‘œλ΄‡μ„ λ§Œλ“œλŠ” ν΄λž˜μŠ€κ°€ μžˆλ‹€κ³  κ°€μ •ν•΄λ³΄μž. public class Main { public static void main(String[] args) { Robot taekwonV = new TaekwonV("TaekwonV"); Robot atom = new Atom("Ateom"); Sy..

λ””μžμΈνŒ¨ν„΄ κ°œμš”

λ””μžμΈνŒ¨ν„΄μ΄λž€? μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό 섀계할 λ•Œ νŠΉμ • λ§₯λ½μ—μ„œ 자주 λ°œμƒν•˜λŠ” 고질적인 λ¬Έμ œλ“€μ΄ 또 λ°œμƒν–ˆμ„ λ•Œ μž¬μ‚¬μš©ν•  수 μžˆλŠ” ν•΄κ²°μ±… νŒ¨ν„΄μ΄λž€? λΉ„μŠ·ν•˜κ±°λ‚˜ λ™μΌν•œ 양식 λ˜λŠ” μœ ν˜•λ“€μ΄ λ°˜λ³΅λ˜μ–΄ λ‚˜νƒ€λ‚˜λŠ” 것 λ¬Έμ œμ™€ 해결책도 λ™μΌν•œ μœ ν˜•μ΄λ‚˜ 양식을 톡해 μ‰½κ²Œ 찾을 수 μžˆλ‹€. λ””μžμΈ νŒ¨ν„΄μ— μ μ ˆν•œ 격언 바퀴λ₯Ό λ‹€μ‹œ 발λͺ…ν•˜μ§€ 마라 (Dont reinvent the wheel) 이미 잘 κ΅΄λŸ¬κ°€λŠ” λ°”ν€΄λŠ” μ²˜μŒλΆ€ν„° λ‹€μ‹œ λ§Œλ“€ ν•„μš”κ°€ μ—†λ‹€. λ””μžμΈνŒ¨ν„΄ ꡬ쑰 μ½˜ν…μŠ€νŠΈ : λ¬Έμ œκ°€ λ°œμƒν•˜λŠ” μ—¬λŸ¬ 상황을 기술 λ¬Έμ œκ°€ λ°œμƒν•˜λŠ” μ—¬λŸ¬ 상황을 κΈ°μˆ ν•œλ‹€. 즉, νŒ¨ν„΄μ΄ 적용될 수 μžˆλŠ” 상황을 λ‚˜νƒ€λ‚Έλ‹€. κ²½μš°μ— λ”°λΌμ„œλŠ” νŒ¨ν„΄μ΄ μœ μš©ν•˜μ§€ λͺ»ν•˜λŠ” 상황을 λ‚˜νƒ€λ‚΄κΈ°λ„ ν•œλ‹€. 문제 : νŒ¨ν„΄μ΄ μ μš©λ˜μ–΄ 해결될 ν•„μš”κ°€ μžˆλŠ” λ””μžμΈ 이슈 νŒ¨ν„΄μ΄ μ μš©λ˜μ–΄ ν•΄κ²°..