Java

[Effective Java] ์•„์ดํ…œ 64. ๊ฐ์ฒด๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ์ฐธ์กฐํ•˜๋ผ.

quedevel 2023. 3. 29. 10:56
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽฏ ์•„์ดํ…œ 64. ๊ฐ์ฒด๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ์ฐธ์กฐํ•˜๋ผ.

์ ํ•ฉํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์žˆ๋‹ค๋ฉด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฟ ์•„๋‹ˆ๋ผ ๋ฐ˜ํ™˜๊ฐ’, ๋ณ€์ˆ˜, ํ•„๋“œ๋ฅผ ์ „๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•˜๋ผ.

/* ํ• ์ธ ์ •์ฑ… ์ธํ„ฐํŽ˜์ด์Šค */
public interface DiscountPolicy {
    int discount(Member member, int price);
}
/* ์ •์•ก ํ• ์ธ ํด๋ž˜์Šค */
public class FixDiscountPolicy implements DiscountPolicy{

    private int discountFixAmount = 1000; // 1000์› ํ• ์ธ

    @Override
    public int discount(Member member, int price) { ... }
}
/* ์ •๋ฅ  ํ• ์ธ ํด๋ž˜์Šค */
public class RateDiscountPolicy implements DiscountPolicy{

    private int discountPercent = 10;

    @Override
    public int discount(Member member, int price) { ... }
}
/* ์ฃผ๋ฌธ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง */
public class OrderServiceImpl implements OrderService{
    private final MemberRepository memberRepository;
    private final DiscountPolicy discountPolicy;
}

์œ„ ์ฒ˜๋Ÿผ ์ •์•ก ํ• ์ธ์—์„œ ์ •๋ฅ  ํ• ์ธ์œผ๋กœ ์ •์ฑ…์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์„ ์–ธํ•˜๊ฒŒ๋˜๋ฉด ์ •๋ฅ  ํ• ์ธ ํด๋ž˜์Šค๋ฅผ ์ฃผ์ž…ํ•ด์ฃผ๋ฉด ์ •์ƒ ๋™์ž‘ํ•˜๊ฒŒ๋˜์–ด ํ›จ์”ฌ ์œ ์—ฐํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.


์ฐธ๊ณ  ์ž๋ฃŒ

Joshua Bloch, ใ€ŽEffective Java 3/Eใ€, ๊ฐœ์•ž๋งต์‹œ ์˜ฎ๊น€, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ธ์‚ฌ์ดํŠธ(2018)
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966262281&orderClick=LEa&Kc=

728x90
๋ฐ˜์‘ํ˜•