🌻 JAVA

🌻 JAVA/λ””μžμΈ νŒ¨ν„΄

6. μ»€λ§¨λ“œ(Command) νŒ¨ν„΄ - Head First Design Patterns

μ»€λ§¨λ“œ νŒ¨ν„΄ μ •μ˜ ) μ»€λ§¨λ“œ νŒ¨ν„΄μ„ μ΄μš©ν•˜λ©΄ μš”κ΅¬μ‚¬ν•­μ„ 객체둜 μΊ‘μŠν™” ν• μˆ˜ 있으며, λ§€κ°œλ³€μˆ˜λ₯Ό μ¨μ„œ μ—¬λŸ¬κ°€μ§€ λ‹€λ₯Έ μš”κ΅¬ 사항을 집어 λ„£μ„μˆ˜ μžˆλ‹€. λ˜ν•œ, μš”μ²­ 내역을 큐에 μ €μž₯ν•˜κ±°λ‚˜ 둜그λ₯Ό κΈ°λ‘ν•˜μ—¬, μž‘μ—… μ·¨μ†Œ κΈ°λŠ₯도 λ„£μ„μˆ˜ μžˆλ‹€. 컀맨트 νŒ¨ν„΄μ€ 일련의 행동을 νŠΉμ • λ¦¬μ‹œλ²„ ν•˜κ³  μ—°κ²° μ‹œν‚΄μœΌλ‘œμ¨ μš”κ΅¬ 사항을 μΊ‘μŠν™” μ‹œν‚¨λ‹€. μš”μ²­μ„ ν•˜λŠ” 객체와 κ·Έ μš”μ²­μ„ μˆ˜ν–‰ν•˜λŠ” 객체λ₯Ό λΆ„λ¦¬μ‹œν‚€κ³  μ‹Άλ‹€λ©΄ μ»€λ§¨λ“œ νŒ¨ν„΄μ„ μ‚¬μš©ν•˜λ©΄ λœλ‹€. μ»€λ§¨λ“œ νŒ¨ν„΄ : 클래슀 λ‹€μ΄μ–΄κ·Έλž¨ Remote Control 예제 public class LightOnCommand implements Command { Light light; public LightOnCommand(Light light) { this.light = light; } public..

🌻 JAVA/λ””μžμΈ νŒ¨ν„΄

5. μ‹±κΈ€ν„΄ (Singleton) νŒ¨ν„΄ - Head First Design Patterns

μΈμŠ€ν„΄μŠ€ μƒμ„±ν• λ•Œ μ–΄λ–»κ²Œ ν• κΉŒ? --------> new MyClass(); λ§Œμ•½ μƒμ„±μžκ°€ private으둜 μ„ μ–ΈλΌμžˆμœΌλ©΄? --------> μΈμŠ€ν„΄μŠ€ 생성 λΆˆκ°€. μƒμ„±ν•˜κ²Œ ν•˜λ €λ©΄?? --> μΈμŠ€ν„΄μŠ€λ³€μˆ˜λ₯Ό staticλ³€μˆ˜λ‘œ 미리 μ„ μ–Έν›„ --> μš”μ²­μ‹œ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό λ§Œλ“€μ–΄μ„œ λ„˜κ²¨μ£ΌλŠ” μ‹μœΌλ‘œ 생성해쀀닀. public class Singleton{ private static Singleton uniqueInstance; private Singleton() { } // private둜 μ„ μ–Έλœ μƒμ„±μž public static Singleton getInstance() { //μΈμŠ€ν„΄μŠ€ μƒμ„±ν•˜λŠ” λ©”μ†Œλ“œ if (uniqueInstance == null) { //μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λœ 적이 μžˆλŠ”μ§€ 확인후 uniqueInsta..

🌻 JAVA/λ””μžμΈ νŒ¨ν„΄

4. νŒ©ν† λ¦¬(Factory) νŒ¨ν„΄ - Head First Design Patterns

"new" λŠ” ꡬ상 객체λ₯Ό λœ»ν•œλ‹€. μ•žμ—μ„œ 배운 것 처럼 κ΅¬μƒν΄λž˜μŠ€λ₯Ό λ°”νƒ•μœΌλ‘œ μ½”λ”©ν•˜λ©΄ λ‚˜μ€‘μ— μ½”λ“œλ₯Ό μˆ˜μ •ν•΄μ•Ό ν•  κ°€λŠ₯성이 높아지고, μœ μ—°μ„±μ΄ λ–¨μ–΄μ§€κ²Œ λœλ‹€. Duck duck; if( picnic) { duck = new MallardDuck(); } else if( hunting ){ duck = new DecoyDuck(); } else if ( inBathTub){ duck = new RubberDuck(); } 이런 μ½”λ“œλŠ” λ­”κ°€λ₯Ό λ°˜μ˜ν•˜κ±°λ‚˜, ν™•μž₯ν•΄μ•Ό ν• λ•Œ μ½”λ“œλ₯Ό λ‹€μ‹œ ν™•μΈν•˜κ³  μΆ”κ°€ λ˜λŠ” 제거 ν•΄μ•Ό ν•œλ‹€λŠ” 것을 λœ»ν•œλ‹€. λ”°λΌμ„œ 이런 μ½”λ“œλŠ” 관리 및 갱신이 νž˜λ“€μ–΄μ§€κ³  였λ₯˜κ°€ 생길 κ°€λŠ₯성이 크닀. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ κ΅¬μƒν΄λž˜μŠ€μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“œλŠ” 뢀뢄을 μ•„μ˜ˆ λ‹€λ₯Έμͺ½μœΌλ‘œ 뢄리 μ‹œμΌœμ•Ό ν•œλ‹€. μ•žμ—μ„œ λ°°μ› λ˜..

🌻 JAVA/λ””μžμΈ νŒ¨ν„΄

3. λ°μ½”λ ˆμ΄ν„°(Decorator) νŒ¨ν„΄ - Head First Design Patterns

컀피 전문점을 μƒκ°ν•΄λ³΄μž. 객체 λ§ˆμ„μ— μŠ€νƒ€λ²„μ¦ˆλΌλŠ” μ»€ν”Όμˆμ΄ μžˆλ‹€. μ»€ν”Όμ˜ μ’…λ₯˜λŠ” μ—¬λŸ¬κ°€μ§€μ— μΆ”κ°€ν• μˆ˜ μžˆλŠ” 메뉴가 μˆ˜μ‹­κ°€μ§€κ°€ λ μˆ˜λ„ μžˆλ‹€. λ‹€μŒ 그림을 보자. μ΄λ ‡κ²Œ 클래슀 κ°œμˆ˜κ°€ μ—„μ²­λ‚˜κ²Œ λŠ˜μ–΄λ‚œλ‹€. 컀피 메뉴가 더 λŠ˜μ–΄λ‚˜λ©΄ 훨씬 더 λŠ˜μ–΄λ‚  것이닀. 상속이 κ°•λ ₯ν•˜κΈ΄ ν•˜μ§€λ§Œ, λͺ¨λ“  μ„œλΈŒ ν΄λž˜μŠ€μ—μ„œλŠ” λ˜‘κ°™μ€ 행동을 μƒμ†λ°›κ²Œ λœλ‹€. μ΄λŸ΄λ•Œ, ꡬ성을 ν†΅ν•΄μ„œ 행동을 ν™•μž₯ν•˜κ²Œ 되면 싀행쀑에 λ™μ μœΌλ‘œ 행동을 μ„€μ •ν•  μˆ˜μžˆλ‹€. (μŠ€νŠΈλ ˆν‹°μ§€ νŒ¨ν„΄) λ””μžμΈ 원칙 ) ν΄λž˜μŠ€λŠ” ν™•μž₯에 λŒ€ν•΄μ„œλŠ” μ—΄λ €μžˆμ–΄μ•Ό ν•˜μ§€λ§Œ, μ½”λ“œ 변경에 λŒ€ν•΄μ„œλŠ” λ‹«ν˜€ μžˆμ–΄μ•Ό ν•œλ‹€. O.C.P ( Open-Closed Principle) *무쑰건 OCPλ₯Ό μ μš©ν•˜λŠ” 것은 μ‹œκ°„ λ‚­λΉ„κ°€ λ μˆ˜λ„ μžˆλ‹€. μ½”λ“œλ₯Ό ν™•μž₯ν•΄μ•Ό ν•  뢀뢄을 μ„ νƒν• λ•ŒλŠ” μ„Έμ‹¬ν•œ 주의λ₯Ό κΈ°μšΈμ—¬μ•Ό ..

🌻 JAVA/λ””μžμΈ νŒ¨ν„΄

2. μ˜΅μ €λ²„(Observer) νŒ¨ν„΄ - Head First Design Patterns

* μ˜΅μ €λ²„ νŒ¨ν„΄μ€ μ‰½κ²Œ λ§ν•΄μ„œ, 신문사 ꡬ독 λ©”μ»€λ‹ˆμ¦˜κ³Ό κ°™λ‹€κ³  ν• μˆ˜ μžˆλ‹€. μΆœνŒμ‚¬λ₯Ό 주제(Subject) , κ΅¬λ…μžλ₯Ό μ˜΅μ €λ²„(Observer) 라고 μ •ν•΄λ³΄μž. μ˜΅μ €λ²„λŠ” 등둝(register) , 제거(remove) κ°€ μžμœ λ‘­λ‹€. μ˜΅μ €λ²„ νŒ¨ν„΄ μ •μ˜ ) ν•œ 객체의 μƒνƒœκ°€ λ°”λ€Œλ©΄ κ·Έ 객체의 μ˜μ‘΄ν•˜λŠ” λ‹€λ₯Έ κ°μ²΄λ“€ν•œν…Œ 연락이 κ°€κ³ , μžλ™μœΌλ‘œ λ‚΄μš©μ΄ κ°±μ‹ λ˜λŠ” λ°©μ‹μœΌλ‘œ μΌλŒ€λ‹€ μ˜μ‘΄μ„±μ„ μ •μ˜ν•œλ‹€. μ˜΅μ €λ²„μ— λŒ€ν•œ λͺ¨λ“  μ œμ–΄ ( 등둝(register) , 제거(remove) , μ•Œλ¦Ό(notify) ) λŠ” Subjectμ—μ„œ κ΄€λ¦¬ν•œλ‹€. λ””μžμΈ 원칙 ) μ„œλ‘œ μƒν˜Έμž‘μš©μ„ ν•˜λŠ” 객체 μ‚¬μ΄μ—μ„œλŠ” κ°€λŠ₯ν•˜λ©΄ *λŠμŠ¨ν•˜κ²Œ κ²°ν•©ν•˜λŠ” λ””μžμΈμ„ μ‚¬μš©ν•΄μ•Όν•œλ‹€. * 변경사항이 생겨도 μ‰½κ²Œ 처리λ₯Ό ν• μˆ˜κ°€ μžˆλ‹€. 객체 μ‚¬μ΄μ˜ μƒν˜Έμ˜μ‘΄μ„±μ„ μ΅œμ†Œν™” ν• μˆ˜ ..

🌻 JAVA/λ””μžμΈ νŒ¨ν„΄

1. μŠ€νŠΈλž˜ν‹°μ§€(Strategy) νŒ¨ν„΄ - Head First Design Patterns

* 상속을 잘 ν™œμš©ν•˜λ©΄ μž¬μ‚¬μš© ν• μˆ˜ μžˆμ§€λ§Œ, μ‹€μ œ μ½”λ“œλ₯Ό μ •λΉ„ ν•˜λŠ”λ°λŠ” 별 도움이 λ˜μ§€ μ•ŠλŠ”λ‹€. 이런 μ‹μœΌλ‘œ μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜λ©΄ , λ‚˜μ€‘μ— 행동을 μΆ”κ°€ν•œλ‹€λ˜μ§€, λ‹€λ₯Έ 였리λ₯Ό μΆ”κ°€ ν• λ•Œ λ¬Έμ œκ°€ λ°œμƒν•œλ‹€. μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•˜λŠ” μ μ—μ„œλ„ 쒋지 μ•Šκ³ , λ‚˜μ€‘μ— λ‚ μ•„λ‹€λ‹ˆλŠ”, κ½₯κ½₯ κ±°λ¦¬λŠ” 행동을 λ°”κΏ€λ•Œ, λͺ¨λ“  μ½”λ“œλ₯Ό λ‹€ λ°”κΏ”μ•Όν•˜λŠ” 상황을 μ΄ˆλž˜ν•œλ‹€. λ””μžμΈ 원칙 ) μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ λ‹¬λΌμ§€λŠ” 뢀뢄을 μ°Ύμ•„λ‚΄κ³ , 달라지지 μ•ŠλŠ” λΆ€λΆ„μœΌλ‘œλΆ€ν„° λΆ„λ¦¬μ‹œν‚¨λ‹€. κ·Έλ ‡λ‹€λ©΄, Duckν΄λž˜μŠ€μ—μ„œλŠ” ? λ‚˜λŠ” 행동과 κ½₯κ½₯ κ±°λ¦¬λŠ” 행동을 뢄리 μ‹œν‚¨λ‹€. λ””μžμΈ 원칙 ) κ΅¬ν˜„μ΄ μ•„λ‹Œ μΈν„°νŽ˜μ΄μŠ€μ— λ§žμΆ°μ„œ ν”„λ‘œκ·Έλž˜λ° ν•œλ‹€. μ΄λŸ°μ‹μœΌλ‘œ λ””μžμΈ ν•˜λ©΄ λ‹€λ₯Έ ν˜•μ‹ κ°œμ²΄μ—μ„œλ„ λ‚˜λŠ” 행동과 κ½₯κ½₯ 행동을 μž¬μ‚¬μš© ν• μˆ˜ μžˆλ‹€. (μ½”λ“œμ˜ μž¬μ‚¬μš©) 그리고, 기쑴의 행동 클래슀λ₯Ό..

iseunghan
'🌻 JAVA' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘ (14 Page)