โ๐ปํธ๋ฆฌํ ์๋ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๋ค.
โ๐ป์ง์ ๋ฑ๋กํ๋ ๊ธฐ์ ์ง์ ๊ฐ์ฒด๋ ์๋ ๋ฑ๋ก
๐๐ป๋คํ์ฑ์ ์ ๊ทน ํ์ฉํ๋ ๋น์ฆ๋์ค ๋ก์ง์ ์๋ ๋ฑ๋ก์ ๊ณ ๋ฏผํด๋ณธ๋ค.
ํธ๋ฆฌํ ์๋ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๋ค.
- ์๋์ ์ ํธํ๋ ์ถ์ธ
- ์๋ ๋น ๋ฑ๋ก์ ์ฌ์ฉํด๋ OCP, DIP๋ฅผ ์งํฌ ์ ์๋ค.
์๋ ๋น ๋ฑ๋ก์ ์ฌ์ฉํ๋ฉด ์ข์ ๋
์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๊ฒ ์ ๋ฌด ๋ก์ง๊ณผ ๊ธฐ์ ์ง์ ๋ก์ง์ผ๋ก ๋๋ ์ ์๋ค.
์ ๋ฌด ๋ก์ง ๋น : ์น์ ์ง์ํ๋ ์ปจํธ๋กค๋ฌ, ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ด ์๋ ์๋น์ค,
๋ฐ์ดํฐ ๊ณ์ธต์ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฑ์ด ๋ชจ๋ ์ ๋ฌด ๋ก์ง์ด๋ค.
๋ณดํต ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ ๊ฐ๋ฐํ ๋ ์ถ๊ฐ๋๊ฑฐ๋ ๋ณ๊ฒฝ๋๋ค.
๊ธฐ์ ์ง์ ๋น : ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๋ ๊ณตํต ๊ด์ฌ์ฌ(AOP)๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ด๋, ๊ณตํต ๋ก๊ทธ ์ฒ๋ฆฌ ์ฒ๋ผ ์ ๋ฌด ๋ก์ง์ ์ง์ํ๊ธฐ ์ํ ํ๋ถ ๊ธฐ์ ์ด๋ ๊ณตํต ๊ธฐ์ ๋ค์ด๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฒ์ํ๊ฒ ์ํฅ์ ๋ฏธ์น๋ ๊ธฐ์ ์ง์ ๊ฐ์ฒด๋ ์๋ ๋น์ผ๋ก ๋ฑ๋กํด์
์ค์ ์ ๋ณด์ ๋ฐ๋ก ๋ํ๋๊ฒ ํ๋ ๊ฒ์ด ์ ์ง๋ณด์ ํ๊ธฐ ์ข๋ค.
๊ธฐ์ ์ง์ ๋ก์ง์ ์ ๋ฌด ๋ก์ง๊ณผ ๋น๊ตํด์ ๊ทธ ์๊ฐ ๋งค์ฐ ์ ๊ณ ,
๋ณดํต ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ๊ฑธ์ณ์ ๊ด๋ฒ์ํ๊ฒ ์ํฅ์ ๋ฏธ์น๋ค.
์ ๋ฌด ๋ก์ง์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ์ด๋๊ฐ ๋ฌธ์ ์ธ์ง ๋ช ํํ๊ฒ ์ ๋ค์ด๋์ง๋ง,
๊ธฐ์ ์ง์ ๋ก์ง์ ์ ์ฉ์ด ์ ๋๊ณ ์๋์ง ์๋์ง ์กฐ์ฐจ ํ์ ํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๊ทธ๋์ ์ด๋ฐ ๊ธฐ์ ์ง์ ๋ก์ง๋ค์ ๊ฐ๊ธ์ ์๋ ๋น ๋ฑ๋ก์ ์ฌ์ฉํด์ ๋ช ํํ๊ฒ ๋ค์ด๋ด๋ ๊ฒ์ด ์ข๋ค.
๋น์ฆ๋์ค ๋ก์ง ์ค์์ ๋คํ์ฑ์ ์ ๊ทน ํ์ฉํ ๋
* ์ด์ ์ ์์ฑํ ์ฝ๋ 232์ผ์ฐจ(๋ชจํ 141์ผ์ฐจ) - ์กฐํํ ๋น์ด ๋ชจ๋ ํ์ํ ๋, List, Map
private final Map<String, DiscountPolicy> policyMap;
DiscountPolicy์ ๋ญ๊ฐ ๋ค์ด์ค๋์ง ํ๋ฒ์ ์ ๋ฐฉ๋ฒ์ด ์๋ค.
(์ฐพ์์ RateDiscountPolicy์ FixDiscountPolicy๋ฅผ ์ ์ ์์ง๋ง)
๋ณ๋์ ์คํ๋ง ๋น configuration ์ ๋ณด์ ์๋ ๋ฑ๋กํ๋ฉด ํ๋์ ๋ณด์ธ๋ค.
@Configuration
public class DiscountPolicyConfig {
@Bean
public DiscountPolicy rateDiscountPolicy() {
return new RateDiscountPolicy();
}
@Bean
public DiscountPolicy fixDiscountPolicy() {
return new FixDiscountPolicy();
}
}
* ์คํ๋ง๊ณผ ์คํ๋ง ๋ถํธ๊ฐ ์๋์ผ๋ก ๋ฑ๋กํ๋ ์ ๋ง์ ๋น๋ค์ ์์ธ๋ค.
์คํ๋ง ๋ถํธ๊ฐ ์๋๋ผ ๋ด๊ฐ ์ง์ ๊ธฐ์ ์ง์ ๊ฐ์ฒด๋ฅผ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ค๋ฉด
์๋์ผ๋ก ๋ฑ๋กํด์ ๋ช ํํ๊ฒ ๋ค์ด๋ด๋ ๊ฒ์ด ์ข๋ค.
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
237์ผ์ฐจ(๋ชจํ 146์ผ์ฐจ) - โญ๋ฌธ์ ํด๊ฒฐโญ (0) | 2022.05.10 |
---|---|
236์ผ์ฐจ(๋ชจํ 145์ผ์ฐจ) - ์ฒ์๋ถํฐ ๋ค์ ํด๋ณด๊ธฐ (0) | 2022.05.09 |
232์ผ์ฐจ(๋ชจํ 141์ผ์ฐจ) - ์กฐํํ ๋น์ด ๋ชจ๋ ํ์ํ ๋, List, Map (0) | 2022.05.05 |
231์ผ์ฐจ(๋ชจํ 140์ผ์ฐจ) - ํ๋ก์ ํธ (0) | 2022.05.04 |
230์ผ์ฐจ(๋ชจํ 139์ผ์ฐจ) - ์ด๋ ธํ ์ด์ ์ง์ ๋ง๋ค๊ธฐ (0) | 2022.05.03 |