λ‘œμΌ“πŸΎ
article thumbnail
[Java] μŠ€ν”„λ§μ„ μ™œ μ‚¬μš©ν• κΉŒ?(2) - OCP와 DIP ν•΄κ²° By 순수 μžλ°”
... 2022. 2. 1. 11:25

μ§€λ‚œ ν¬μŠ€νŒ…μ—μ„œλŠ” OCP와 DIPκ°€ μœ„λ°° λ˜λŠ” κ²½μš°μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€. μ΄λ²ˆμ—λŠ” μŠ€ν”„λ§μ΄ μ•„λ‹Œ 순수 μžλ°”λ‘œ ν•΄κ²°ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 잠깐 μ§€λ‚œ κΈ€μ˜ 클래슀 λ‹€μ΄μ–΄κ·Έλž¨μ„ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. public class DriverImpl implements Driver{ Car car = new K3(); Engine engine = new Electronic(); @Override public void findOwnCarDetail() { car.findCarName(); car.findCarBrand(); engine.WayToMove(); } } DriverImpl 역할에 κ΅¬ν˜„μ²΄κ°€ 직접 new ν‚€μ›Œλ“œλ‘œ μ„ μ–Έ λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이럴 경우 얼핏보면 OCP와 DIPλ₯Ό 잘 지킨 것 κ°™μ§€λ§Œ 사싀 μ•„λ‹ˆλΌκ³  μ§€λ‚œ ν¬μŠ€νŒ…μ—μ„œ ..

article thumbnail
[Java] μŠ€ν”„λ§μ„ μ™œ μ‚¬μš©ν• κΉŒ?(1) - OCP와 DIP의 μœ„λ°°
... 2022. 1. 20. 15:20

λ°”λŠ˜κ³Ό μ‹€μ²˜λŸΌ μžλ°”ν•˜λ©΄ λ°”λ‘œ λ– μ˜€λ₯΄λŠ” 것이 μžˆμŠ΅λ‹ˆλ‹€. λ°”λ‘œ "객체 지ν–₯ μ–Έμ–΄" λΌλŠ” κ²ƒμž…λ‹ˆλ‹€. "객체 지ν–₯"μ΄λž€ 레고라고 생각할 수 μžˆμŠ΅λ‹ˆλ‹€. 레고 블둝듀을 μ‘°λ¦½ν•˜μ—¬ μš°λ¦¬λŠ” 무엇이든 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. 레고λ₯Ό μ΄μš©ν•΄μ„œ 동물원을 λ§Œλ“€μ—ˆλ‹€κ³  μƒκ°ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. λ™λ¬Όμ›μ—λŠ” 레고둜 λ§Œλ“€μ–΄μ§„ μ‚¬μžλ„ 있고, ν˜Έλž‘μ΄λ„ 있고, 코끼리도 있고, μ œκ°€ μ’‹μ•„ν•˜λŠ” νŒλ‹€λ„ μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μŠ¬ν”„κ²Œλ„ 더 이상 ν˜Έλž‘μ΄κ°€ 인기가 μ—†μ–΄μ„œ 고릴라 레고둜 λ°”κΎΈκ³  μ‹ΆμŠ΅λ‹ˆλ‹€. 이럴 경우 μš°λ¦¬λŠ” μ‰½κ²Œ λ™λ¬Όμ›μ—μ„œ ν˜Έλž‘μ΄ 레고λ₯Ό λΉΌκ³  고릴라 레고λ₯Ό λ„£μ–΄μ£Όλ©΄ λ©λ‹ˆλ‹€. μ—¬κΈ°μ„œ ν˜Έλž‘μ΄, 고릴라가 객체가 λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€. ν˜Έλž‘μ΄λ₯Ό λΊ€ λ‹€κ³  ν•΄μ„œ 기쑴에 있던 μ‚¬μžλ‚˜ νŒλ‹€ λ ˆκ³ λŠ” μ „ν˜€ 영ν–₯이 μ—†μŠ΅λ‹ˆλ‹€. λ§Œμ•½ 라이거 레고λ₯Ό λ§Œλ“€κ³  μ‹Άλ‹€κ³ , ν˜Έλž‘μ΄μ™€ μ‚¬μžλ₯Ό 마ꡬ작..

article thumbnail
[Spring] 관점 지ν–₯ ν”„λ‘œκ·Έλž¨(AOP) μ΄ν•΄ν•˜κΈ°
... 2021. 1. 3. 22:28

μŠ€ν”„λ§μ˜ νŠΉμ§•μ„ 5κ°€μ§€λ‘œ λ‚˜λˆˆλ‹€λ©΄ λ‹€μŒκ³Ό 같이 λ‚˜λˆŒ 수 μžˆμŠ΅λ‹ˆλ‹€. κ²½λŸ‰ μ»¨ν…Œμ΄λ„ˆ DI(Dependency Injection, μ˜μ‘΄μ„± μ£Όμž…) IoC(μ œμ–΄μ˜ 역흐름, Inversion of Control) AOP(관점지ν–₯ν”„λ‘œκ·Έλž˜λ°, Aspect oriented Programming) POJO λ°©μ‹μ˜ ν”„λ ˆμž„μ›Œν¬ κ·Έ 쀑 이번 κΈ€μ—μ„œλŠ” AOP(관점지ν–₯ν”„λ‘œκ·Έλž˜λ°)에 λŒ€ν•΄ μ•Œμ•„λ³΄λ €κ³  ν•©λ‹ˆλ‹€. l AOPλŠ” μ™œ ν•„μš”ν• κΉŒ? μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“€λ‹€ 보면 해킹을 λŒ€λΉ„ν•˜κΈ° μœ„ν•œ λ³΄μ•ˆ κΈ°λŠ₯, μ‚¬μš©μžμ˜ 접속 내역을 μœ„ν•œ λ‘œκΉ… κΈ°λŠ₯ 그외에 νŠΈλžœμž­μ…˜, 이메일 λ°œμ†‘ κΈ°λŠ₯ λ“± μˆ˜λ§Žμ€ κΈ°λŠ₯듀이 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ“€μ˜ 곡톡점은 λ¬΄μ—‡μΌκΉŒμš”? λͺ¨λ‘ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ꡬ좕할 λ•Œ κ³΅ν†΅μ μœΌλ‘œ ν•„μš”ν•œ κΈ°λŠ₯λ“€ μž…λ‹ˆλ‹€. 그리고 λŒ€λΆ€λΆ„μ˜ ν΄λž˜μŠ€λ“€μ΄ μ΄λŸ¬ν•œ κΈ°λŠ₯..

article thumbnail
[Spring] μŠ€ν”„λ§ DI, IoC μ΄ν•΄ν•˜κΈ°
... 2021. 1. 2. 14:56

μžλ™μ°¨μ—μ„œ λ§Œμ•½ 엔진이 μ˜€λž˜λ˜μ„œ 엔진을 λ°”κΎΈκ³  μ‹Άλ‹€λ©΄, μžλ™μž 전체가 μ•„λ‹Œ μ—”μ§„λ§Œ λ½‘μ•„μ„œ λ°”κΏ”μ£Όλ©΄ λ©λ‹ˆλ‹€. 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œλ„ ν΄λž˜μŠ€μ— λŒ€ν•œ 변경이 ν•„μš”ν•˜λ©΄ λ‹€λ₯Έ ν΄λž˜μŠ€μ— 영ν–₯을 λΌμΉ˜μ§€ μ•ŠμœΌλ©΄μ„œ 변경이 κ°€λŠ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 상황에 더 μˆ˜μ›”ν•˜κ²Œ 변경이 κ°€λŠ₯μΌ€ λ„μ™€μ€„μˆ˜ μžˆλ„λ‘ λ„μž…λœ κΈ°λŠ₯이 λ°”λ‘œ DI(Dependency Injection)와 IoC(Inversion of Control)μž…λ‹ˆλ‹€. μžλ°”λ‘œ ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ©΄μ„œ 객체λ₯Ό 생성할 λ•Œ 직접 ν΄λž˜μŠ€μ— new μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜μ—¬ μƒμ„±ν–ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ DIλŠ” κ°œλ°œμžκ°€ 직접 코딩을 ν•˜μ—¬ 객체λ₯Ό μƒμ„±ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, μ»¨ν…Œμ΄λ„ˆκ°€ 이λ₯Ό μƒμ„±μ‹œμΌœ μ£ΌλŠ” κ²ƒμž…λ‹ˆλ‹€. κ·Έλ ‡κ²Œ λœλ‹€λ©΄ μ½”λ“œμ—μ„œ 직접적인 μ—°κ΄€ 관계가 λ°œμƒν•˜μ§€ μ•Šμ•„ 각 ν΄λž˜μŠ€λ“€μ˜ 변경이 μžμœ λ‘œμ›Œ μ§‘λ‹ˆλ‹€...

profile on loading

Loading...