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
๋ฐ์ํ