๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/Spring

[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ] ์ธํ”„๋Ÿฐ ๊ฐ•์˜ ์ •๋ฆฌ(๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ ์ ์šฉ - ์ƒˆ๋กœ์šด ๊ตฌ์กฐ์™€ ํ• ์ธ ์ •์ฑ… ์ ์šฉ, ์ข‹์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ 5๊ฐ€์ง€ ์›์น™ ์ ์šฉ)

by YeonBu 2023. 10. 21.
728x90

/* ์ด ๊ธ€์€ ๊น€์˜ํ•œ๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•˜๋ ค๊ณ  ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

   ๊ฐœ์ธ์ ์ธ ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด ์˜ฌ๋ฆฌ๋Š” ๊ธ€์ด๋ฏ€๋กœ ์ค‘๊ฐ„ ์ค‘๊ฐ„ ์ฝ”๋“œ๋Š” ์ƒ๋žต๋˜์—ˆ์Šต๋‹ˆ๋‹ค. */

 

 

์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

์Šคํ”„๋ง ์ž…๋ฌธ์ž๊ฐ€ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋ฉด์„œ ์Šคํ”„๋ง์˜ ํ•ต์‹ฌ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ , ์Šคํ”„๋ง ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํ™•์‹คํžˆ ๋‹ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ , ์„ฑ์žฅํ•˜๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์„ธ์š”! ๐Ÿ“ข

www.inflearn.com

 

 

 

์ƒˆ๋กœ์šด ๊ตฌ์กฐ์™€ ํ• ์ธ ์ •์ฑ… ์ ์šฉ

 

 

1. ์š”๊ตฌ์‚ฌํ•ญ ํ™•์ธ

 

โ—พ ์š”๊ตฌ์‚ฌํ•ญ : ์ •์•ก ํ• ์ธ ์ •์ฑ…์„ ์ •๋ฅ  ํ• ์ธ ์ •์ฑ…์œผ๋กœ ๋ณ€๊ฒฝ(FixDiscountPolicy โž” RateDiscountPolicy)

 

โ—พ AppConfig์˜ ๋“ฑ์žฅ์œผ๋กœ ํฌ๊ฒŒ ์‚ฌ์šฉ์˜์—ญ๊ณผ ๊ตฌ์„ฑ์˜์—ญ์œผ๋กœ ๋ถ„๋ฆฌ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์„ฑ์˜์—ญ์—์„œ RateDiscountPolicy๋กœ ๋ณ€๊ฒฝํ•ด๋„ ์‚ฌ์šฉ์˜์—ญ ์ชฝ์€ ์ „ํ˜€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.

 

 

 

2. ์ฝ”๋“œ ์ž‘์„ฑ

 

appConfig

 

public class AppConfig {

    public MemberService memberService() {
        return new MemberServiceImpl(memberRepository());
    }

    public OrderService orderService() {
        return new OrderServiceImpl(memberRepository(), discountPolicy());
    }

    public MemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }

    public DiscountPolicy discountPolicy() {
        return new RateDiscountPolicy();
    }

}

 

โ—พ discountPolicy() ๋ถ€๋ถ„๋งŒ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋œ๋‹ค!

 

 

 

 

 

์ข‹์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ 5๊ฐ€์ง€ ์›์น™ ์ ์šฉ

 

 

1. SRP(๋‹จ์ผ ์ฑ…์ž„ ์›์น™)

ํ•œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

 

โ—พ ๋ฌธ์ œ์  : ์šฐ๋ฆฌ๊ฐ€ ์ฒ˜์Œ ๋งŒ๋“  ํด๋ผ์ด์–ธํŠธ ๊ฐ์ฒด๋Š” ๋‹ค์–‘ํ•œ ์ฑ…์ž„์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Œ(๊ฐ์ฒด ์ƒ์„ฑ, ์—ฐ๊ฒฐ, ์‹คํ–‰)

โ—พ ํ•ด๊ฒฐ : SRP ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ๋”ฐ๋ฅด๊ธฐ ์œ„ํ•ด ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ–ˆ์Œ

โž”  ๊ตฌํ˜„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๋Š” ์ฑ…์ž„ : AppConfig | ์‹คํ–‰ํ•˜๋Š” ์ฑ…์ž„ : ํด๋ผ์ด์–ธํŠธ ๊ฐ์ฒด

 

 

 

2. DIP(์˜์กด๊ด€๊ณ„ ์—ญ์ „ ์›์น™)

ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์ถ”์ƒํ™”์— ์˜์กดํ•ด์•ผ์ง€, ๊ตฌ์ฒดํ™”์— ์˜์กดํ•˜๋ฉด ์•ˆ๋œ๋‹ค.

 

 โ—พ ๋ฌธ์ œ์  : ์ƒˆ๋กœ์šด ํ• ์ธ ์ •์ฑ…์„ ๋งŒ๋“ค๊ณ  ์ ์šฉํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๋„ ํ•จ๊ป˜ ๋ณ€๊ฒฝํ•ด์•ผ ํ–ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด `OrderServiceImpl` ์ด `FixDiscountPolicy`๋ผ๋Š” ๊ตฌ์ฒดํ™” ํด๋ž˜์Šค์— ์˜์กดํ–ˆ๊ธฐ ๋•Œ๋ฌธ.

 โ—พ ํ•ด๊ฒฐ : ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๊ฐ€ `DiscountPolicy`๋ผ๋Š” ์ถ”์ƒํ™” ์ธํ„ฐํŽ˜์ด์Šค์—๋งŒ ์˜์กดํ•˜๋„๋ก ์ฝ”๋“œ ๋ณ€๊ฒฝ

โž”  AppConfig๊ฐ€ `FixDiscountPolicy` ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ๋Œ€์‹  ์ƒ์„ฑํ•ด์„œ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์— ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…

 

 

 

3. OCP(๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™)

์†Œํ”„ํŠธ์›จ์–ด ์š”์†Œ๋Š” ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ์œผ๋‚˜ ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

 โ—พ ๋ฌธ์ œ์  : ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ์  ๋ฐœ์ƒ

 โ—พ ํ•ด๊ฒฐ : AppConfig๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉ์˜์—ญ๊ณผ ๊ตฌ์„ฑ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ”

โž”  AppConfig๊ฐ€ ์˜์กด๊ด€๊ณ„๋ฅผ `FixDiscountPolicy`์—์„œ `RateDiscountPolicy`๋กœ ๋ณ€๊ฒฝํ•ด์„œ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์— ์ฃผ์ž…ํ•˜๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๋Š” ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„ ๋์Œ

โž” ์†Œํ”„ํŠธ์›จ์–ด ์š”์†Œ๋ฅผ ์ƒˆ๋กญ๊ฒŒ ํ™•์žฅํ•ด๋„ ์‚ฌ์šฉ ์˜์—ญ์˜ ๋ณ€๊ฒฝ์€ ๋‹ซํ˜€์žˆ๊ฒŒ ๋จ!

 

 

 

 

 

๋ฐ˜์‘ํ˜•

'IT > Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ] ์ธํ”„๋Ÿฐ ๊ฐ•์˜ ์ •๋ฆฌ(๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ ์ ์šฉ - ์Šคํ”„๋ง์œผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ)  (0) 2023.10.25
[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ] ์ธํ”„๋Ÿฐ ๊ฐ•์˜ ์ •๋ฆฌ(๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ ์ ์šฉ - IoC, DI, ๊ทธ๋ฆฌ๊ณ  ์ปจํ…Œ์ด๋„ˆ)  (1) 2023.10.22
[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ] ์ธํ”„๋Ÿฐ ๊ฐ•์˜ ์ •๋ฆฌ(๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ ์ ์šฉ - AppConfig ๋ฆฌํŒฉํ„ฐ๋ง)  (0) 2023.10.21
[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ] ์ธํ”„๋Ÿฐ ๊ฐ•์˜ ์ •๋ฆฌ(๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ ์ ์šฉ - ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ)  (0) 2023.10.20
[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ] ์ธํ”„๋Ÿฐ ๊ฐ•์˜ ์ •๋ฆฌ(๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ ์ ์šฉ - ์ƒˆ๋กœ์šด ํ• ์ธ ์ •์ฑ… ๊ฐœ๋ฐœ, ์ ์šฉ, ๋ฌธ์ œ์ )  (2) 2023.10.20