λ‘œμΌ“πŸΎ
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
[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...