๋ชฉ๋ก์ ์ฒด ๊ธ (162)
EEALL@ONCE
TRUNCATE TABLE ํ ์ด๋ธ๋ช ; ํด๋น ์ฟผ๋ฆฌ๋ฌธ์ ํ ์ด๋ธ์ ๊ทธ๋๋ก ๋๊ณ ๊ทธ ์์ ๋ฐ์ดํฐ๋ง ์ญ์ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๋ค.
์ค๋ณต์ ์์ ๊ณ , ์ญํ ์ ๋ฐ๋ฅธ ๊ตฌํ์ด ํ์คํด์ผํ๋ค. ๋ฆฌํํฐ๋ง ํ ๋ ์ง์ผ์ผํ๋ ์ : 1. ๊ตฌ์ฑ ์ ๋ณด์์ ์ญํ ๊ณผ ๊ตฌํ์ ๋ช ํํ๊ฒ ๋ถ๋ฆฌ 2. ์ค๋ณต ์ ๊ฑฐ [๋ฆฌํฉํฐ๋ง ์ ] public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(new MemoryMemberRepository()); } public OrderService orderService(){ return new OrderServiceImpl(new MemoryMemberRepository(),new FixDiscountPolicy()); } } [๋ฆฌํฉํฐ๋ง ํ] public class AppConfig { /* ๊ฐ์ ๋ถ๋ถ์ ์ ํํ ๋๋ */ publ..
1. ์ด์ ๊ธ ๋ฌธ์ ์ ํด๋ผ์ด์ธํธ ์ฝ๋์ธ OrderServiceImpl์ด ์ธํฐํ์ด์ค๋ค ๋ฟ๋ง์ด ์๋๋ผ, ๊ตฌ์ฒด ํด๋์ค ( FixDiscountPolicy,RateDiscountPolicy)์๋ ์์กดํ๋ค. ์ฝ๊ฒ ๋งํ์๋ฉด, ํด๋น ์ฝ๋์ ๊ตฌ์ฒด ํด๋์ค ์ฝ๋๊ฐ ๋ค์ด๊ฐ๋ค๋ ๊ฒ!! 2. ํด๋ผ์ด์ธํธ๊ฐ ์ธํฐํ์ด์ค์๋ง ์์กดํ๋๋ก ๋ง๋ค์. public class OrderServiceImpl implements OrderService{ ์์ private DiscountPolicy discountPolicy; ์ธํฐํ์ด์ค๋ง ์ ์ธํด์ค๋ค. ๊ทผ๋ฐ ๊ทธ๋ผ ๊ตฌํ์ฒด๊ฐ ์๋๋ฐ ์ด๋ป๊ฒ ์ฝ๋๋ฅผ ์คํํ ์ ์์๊น? 3.์ญํ ๋ถ๋ฆฌ ํ ์ฃผ์ ์ธํฐํ์ด์ค๋ ์ธ๋ฌผ์ด๊ณ ๊ตฌํ์ฒด๋ ๋ฐฐ์ฐ๋ผ๊ณ ๊ฐ์ ํ์. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ทน ์๊ฐ๋ผ๊ณ ํ๋ค๋ฉด, ์ฐ๊ทน ์๊ฐ๋ ..
1. FROM [์ฃผ ๋ง๋ค ์ผ๋ง๋ ์์ฃผ ๋ฒ์ฃ๊ฐ ๋ฐ์ํ๋์ง ์์๋ณด๊ธฐ ] SELECT daily_stats.week , AVG(daily_stats.incidents_daily) FROM ( SELECT week , date , COUNT(incident_id) AS incidents_daily FROM crimes GROUP BY week, date ) daily_stats GROUP BY daily_stats.week ๊ฐ์์ ์๋ก์ด ํ ์ด๋ธ์ ๋ง๋ค๊ณ , ํด๋น ํ ์ด๋ธ ์ด๋ฆ์ daily_stats๋ผ๊ณ ํ๋ค. ์๋ธ์ฟผ๋ฆฌ๋ก ๋ง๋ค์ด์ง ๊ฐ์์ daily_stats table ( SELECT week , date , COUNT(incident_id) AS incidents_daily FROM crimes GROUP BY w..
1. ์ ์์ผ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ ์ธ (๊ณํ์ ๋ฐ๋ฅด๊ธฐ๋ณด๋ค ๋ณํ์ ๋์ ์์ํ๊ธฐ๋ฅผ!) ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด, ์ ์์ผ ๋ฐฉ์์ ์ฌ์ฉํ ์ ๋ฐ์ ์๋ค. ์ฌ์ค ๊ธฐํ์๋ ์์ ์ด ๋ญ ํ๊ณ ์ถ์์ง ์ ํํ๊ฒ ๋ชจ๋ฅผ ๋๊ฐ ๋ง๋ค! ๊ทธ๋๋ง๋ค, ๊ฐ๋ฐ์๋ ๋ง๋ค์ด์ ๋ณด์ฌ์ฃผ๊ณ ๊ธฐํ์์๊ฒ ์ญ์ผ๋ก ๋ฐฉ๋ฒ์ ์ฌ์ํ๋ค๋๊ฐ, ์๋ ๊ธฐํ์๊ฐ ์ค๊ฐ์ ์์ ์ด ๊นจ๋ซ์ง ๋ชปํ ๋ถ๋ถ์ ์ถ๊ฐํ๊ณ ์ถ์ ๋, ๋ณํ๊ฒ ์์ํด์ ๋ ๊ทธ๋ ๊ฒ ๋ง๋ค์ด์ค์ผํ๋ค. ์๋๋ฉด... ๊ธฐํ์ด๋ ๊ทธ๋ฐ๊ฑฐ๊ณ ... ๊ฐ๋ฐ์๋ ๊ทธ๊ฑธ ์คํ์ํค๋ ์ญํ ์ด๋๊น... ์ด์ฉ ์ ์๋ค. 2. ๋ค์ ๋ฐ๋ ํ ์ธ ์ ์ฑ ์ด์ผ๊ธฐ๋ก ๋์๊ฐ์ ๊ณ ์ ๊ธ์ก ํ ์ธ์์ ๊ณ ์ ํผ์ผํธ ํ ์ธ์ผ๋ก ๋ฐ๊พผ๋ค. ๐ฅ RateDiscountPolicy(%ํ ์ธ์จ) package hello.core.discount; import hello.core.me..
1. ์ํฉ ํ ์ธ ์ ์ฑ ๋ง์์ ์ ์ ํ ์ฌ์ฅ๊ณผ ๋จธ๋ฆฌ๊ฐ ์ํ ๊ฐ๋ฐ์ ํ ์ํฉ์ vip์๊ฒ ๊ณ ์ ํ ์ธ or ํ์ ๋ฑ๊ธ์ ๋ฐ๋ผ ํ ์ธ ๋ฑ์ ๊ณ ๋ฏผ์ค์ด๋ค. 2. ์ฃผ๋ฌธ ๋๋ฉ์ธ ํ๋ ฅ,์ญํ ,์ฑ ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฃผ๋ฌธ์ ํ๋ฉด, ์๋น์ค๋ ํ์ ์กฐํ๋ฅผ ํ๊ณ ๊ทธ์ ๋ฐ๋ฅธ ํ ์ธ์ ์ ์ฉํ๊ณ ํ ์ธ ๊ฒฐ๊ณผ๋ฅผ ํฌํจํ ์ฃผ๋ฌธ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋๋ ค์ค๋ค. 3. ๊ณ ์ ํ ์ธ ์ฝ๋ ์ค๊ณ member ํจํค์ง๋ ํ์ ์ ๋ณด ๋ก์ง์ด / discount ํํค์ง์๋ ํ ์ธ ๋ก์ง์ด / order ํํค์ง์๋ ์ฃผ๋ฌธ ๋ก์ง์ด ๋ด๊ฒจ์๋ค. ์์๋ ๊ฐ ํจํค์ง๋ง๋ค DTO/Repository /Service/Main์์๋ก ์ฝ๋๋ฅผ ๋ณด์ฌ์ฃผ๊ฒ ๋ค. ๐ฅ member ํจํค์ง ๐ป member ๊ฐ์ฒด (DTO) package hello.core.member; public class Member {..
• SRP: ๋จ์ผ ์ฑ ์ ์์น(single responsibility principle) ๋จ์ผ ์ฑ ์ ์์น์ ํ ํด๋์ค๋ ํ๋์ ์ฑ ์์ ๊ฐ์ ธ์ผ ํ๋ค๋ ๊ฒ๋ค. ์กฐ๊ธ ๋ชจํธํ ๊ฐ๋ ์ด๋ค. ํฐ ์ฑ ์ ์์ ์ฑ ์, ํ๋์ ์ฑ ์์ด๋ผ๊ณ ํด๋ ๊ทธ ๊ท๋ชจ๊ฐ ๋ค๋ฅด๋ค. ๊ทธ๋์ ๊ธฐ์ค์ "๋ณ๊ฒฝ"์ด๋ค. ๋ง์ฝ ๋ณ๊ฒฝ์ด ํ์ํ ์์ ์์ ๋๋ฌด ๋ง์ ๋ณ๊ฒฝ์ด ํ์ํ๋ค๋ฉด, ๋จ์ผ ์ฑ ์ ์์น์ด ์ ์ง์ผ์ง์ง ์์ ๊ฒ์ด๋ค. • OCP: ๊ฐ๋ฐฉ-ํ์ ์์น (Open/closed principle) ์ํํธ์จ์ด ์์๋ ํ์ฅ์๋ ์ด๋ ค์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค๋ ์์น ์ฌ์ค ์ธํฐํ์ด์ค๋ง ์๊ฐํด๋ ๋ญ๊ฐ ๊ทธ๋ด์ธํ ์ด์ผ๊ธฐ์ด์ง๋ง, ์ฌ์ค ๊ตฌํ์ ๋ฐ๊พธ๋ฉด, ํด๋ผ์ด์ธํธ์ชฝ์์๋ ๊ตฌํ ํด๋์ค๋ฅผ ์ง์ ์ ํํด์ผํด์, ์ฝ๋ ์์ ์ด ๋ถ๊ฐํผํ๋ค. ์๋ฅผ ๋ค์ด ์ด ๊ฒฝ์ฐ๋ ํด๋ผ์ด์ธํธ๊ฐ ๊ธฐ์กด A..
1. ์คํ๋ง์ด๋? -์๋ฐ(๊ฐ์ฒด ์งํฅ) ์ธ์ด ๊ธฐ๋ฐ์ ํ๋ ์์ํฌ -์คํ๋ง์ ์ข์ ๊ฐ์ฒด ์งํฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๊ฒ ๋์์ฃผ๋ ํ๋ ์์ํฌ ๊ทธ๋ ๋ค๋ฉด... 2. ์ข์ ๊ฐ์ฒด ์งํฅ ์ธ์ด๋? ๊ฐ์ฒด ์งํฅ ํน์ง 1. ์ถ์ํฉ 2. ์บก์ํ 3. ์์ 4. ๋คํ์ฑ ๊ทธ ์ค์์๋ ๋คํ์ฑ์ด ์ค์ํ๋ฐ.. ๋คํ์ฑ์ด๋? 3. ๋คํ์ฑ ์ญํ ๊ณผ ๊ตฌํ์ ๋ถ๋ฆฌํ๋ ๊ฒ ํด๋ผ์ด์ธํธ๋ ๋์์ ์ญํ ๋ง ์๋ฉด ๋๋ค. ํด๋ผ์ด์ธํธ๋ ๊ตฌํ ๋์์ ๋ด๋ถ ๊ตฌ์กฐ๊ฐ ๋ณ๊ฒฝ๋์ด๋ ์ํฅ์ ๋ฐ์ง ์๋๋ค. ํด๋ผ์ด์ธํธ๋ ๊ตฌํ ๋์ ์์ฒด๋ฅผ ๋ณ๊ฒฝํด๋ ์ํฅ์ ๋ฐ์ง ์๋๋ค. ์ญํ = ์ธํฐํ์ด์ค / ๊ตฌํ = ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค,๊ตฌํ ๊ฐ์ฒด ๋ฐ๋ผ์, ๐ป๊ฐ์ฒด ์ค๊ณ์ ์ธํฐํ์ด์ค๋ฅผ ๋จผ์ ๋ถ์ฌํ๊ณ , ๊ทธ ์ญํ ์ ์ํํ๋ ๊ตฌํ ๊ฐ์ฒด ๋ง๋ค๊ธฐ ์ญํ ์ด ๊ตฌํ๋ณด๋ค ์ค์ํ๋ค!! ์๋ฐ ์ธ์ด์ ๋คํ์ฑ์์..