TIL

233์ผ์ฐจ(๋ชจํ—˜ 142์ผ์ฐจ) - ์ž๋™, ์ˆ˜๋™์˜ ์˜ฌ๋ฐ”๋ฅธ ์‹ค๋ฌด ์šด์˜ ๊ธฐ์ค€

haedal-uni 2022. 5. 6. 20:27
728x90

โ˜๐ŸปํŽธ๋ฆฌํ•œ ์ž๋™ ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

โœŒ๐Ÿป์ง์ ‘ ๋“ฑ๋กํ•˜๋Š” ๊ธฐ์ˆ  ์ง€์› ๊ฐ์ฒด๋Š” ์ˆ˜๋™ ๋“ฑ๋ก

๐Ÿ‘Œ๐Ÿป๋‹คํ˜•์„ฑ์„ ์ ๊ทน ํ™œ์šฉํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ์ˆ˜๋™ ๋“ฑ๋ก์„ ๊ณ ๋ฏผํ•ด๋ณธ๋‹ค.

 


 

ํŽธ๋ฆฌํ•œ ์ž๋™ ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

- ์ž๋™์„ ์„ ํ˜ธํ•˜๋Š” ์ถ”์„ธ

- ์ž๋™ ๋นˆ ๋“ฑ๋ก์„ ์‚ฌ์šฉํ•ด๋„ 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();
    }
}

 


 

 

 

* ์Šคํ”„๋ง๊ณผ ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ๋“ฑ๋กํ•˜๋Š” ์ˆ˜ ๋งŽ์€ ๋นˆ๋“ค์€ ์˜ˆ์™ธ๋‹ค.

 

์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ๋‚ด๊ฐ€ ์ง์ ‘ ๊ธฐ์ˆ  ์ง€์› ๊ฐ์ฒด๋ฅผ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค๋ฉด

์ˆ˜๋™์œผ๋กœ ๋“ฑ๋กํ•ด์„œ ๋ช…ํ™•ํ•˜๊ฒŒ ๋“ค์–ด๋‚ด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

728x90