spring core : apply DIP - app config
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package com.example.basic;
|
||||
|
||||
import com.example.basic.discount.DiscountPolicy;
|
||||
import com.example.basic.discount.FixDiscountPolicy;
|
||||
import com.example.basic.member.MemberRepository;
|
||||
import com.example.basic.member.MemberService;
|
||||
import com.example.basic.member.MemberServiceImpl;
|
||||
import com.example.basic.member.MemoryMemberRepository;
|
||||
import com.example.basic.order.OrderService;
|
||||
import com.example.basic.order.OrderServiceImpl;
|
||||
|
||||
public class AppConfig {
|
||||
|
||||
public MemberService memberService() {
|
||||
return new MemberServiceImpl(memberRepository());
|
||||
}
|
||||
|
||||
private MemberRepository memberRepository() {
|
||||
return new MemoryMemberRepository();
|
||||
}
|
||||
|
||||
public OrderService orderService() {
|
||||
return new OrderServiceImpl(memberRepository(), discountPolicy());
|
||||
}
|
||||
|
||||
private DiscountPolicy discountPolicy() {
|
||||
return new FixDiscountPolicy();
|
||||
}
|
||||
}
|
||||
@@ -2,12 +2,13 @@ package com.example.basic;
|
||||
|
||||
import com.example.basic.member.Grade;
|
||||
import com.example.basic.member.Member;
|
||||
import com.example.basic.member.MemberServiceImpl;
|
||||
import com.example.basic.member.MemberService;
|
||||
|
||||
public class MemberApp {
|
||||
|
||||
public static void main(String[] args) {
|
||||
MemberServiceImpl memberService = new MemberServiceImpl();
|
||||
AppConfig appConfig = new AppConfig();
|
||||
MemberService memberService = appConfig.memberService();
|
||||
Member member = new Member(1L, "memberA", Grade.VIP);
|
||||
memberService.join(member);
|
||||
|
||||
|
||||
@@ -3,16 +3,15 @@ package com.example.basic;
|
||||
import com.example.basic.member.Grade;
|
||||
import com.example.basic.member.Member;
|
||||
import com.example.basic.member.MemberService;
|
||||
import com.example.basic.member.MemberServiceImpl;
|
||||
import com.example.basic.order.Order;
|
||||
import com.example.basic.order.OrderService;
|
||||
import com.example.basic.order.OrderServiceImpl;
|
||||
|
||||
public class OrderApp {
|
||||
|
||||
public static void main(String[] args) {
|
||||
MemberService memberService = new MemberServiceImpl();
|
||||
OrderService orderService = new OrderServiceImpl();
|
||||
AppConfig appConfig = new AppConfig();
|
||||
MemberService memberService = appConfig.memberService();
|
||||
OrderService orderService = appConfig.orderService();
|
||||
|
||||
Long memberId = 1L;
|
||||
Member member = new Member(memberId, "memberA", Grade.VIP);
|
||||
|
||||
@@ -2,7 +2,11 @@ package com.example.basic.member;
|
||||
|
||||
public class MemberServiceImpl implements MemberService {
|
||||
|
||||
private final MemberRepository memberRepository = new MemoryMemberRepository();
|
||||
private final MemberRepository memberRepository;
|
||||
|
||||
public MemberServiceImpl(MemberRepository memberRepository) {
|
||||
this.memberRepository = memberRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void join(Member member) {
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
package com.example.basic.order;
|
||||
|
||||
import com.example.basic.discount.DiscountPolicy;
|
||||
import com.example.basic.discount.FixDiscountPolicy;
|
||||
import com.example.basic.discount.RateDiscountPolicy;
|
||||
import com.example.basic.member.Member;
|
||||
import com.example.basic.member.MemberRepository;
|
||||
import com.example.basic.member.MemoryMemberRepository;
|
||||
|
||||
public class OrderServiceImpl implements OrderService {
|
||||
|
||||
private final MemberRepository memberRepository = new MemoryMemberRepository();
|
||||
// private final DiscountPolicy discountPolicy = new FixDiscountPolicy();
|
||||
private final DiscountPolicy discountPolicy = new RateDiscountPolicy();
|
||||
private final MemberRepository memberRepository;
|
||||
private final DiscountPolicy discountPolicy;
|
||||
|
||||
public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
|
||||
this.memberRepository = memberRepository;
|
||||
this.discountPolicy = discountPolicy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Order createOrder(Long memberId, String itemName, int itemPrice) {
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
package com.example.basic.member;
|
||||
|
||||
import com.example.basic.AppConfig;
|
||||
import org.assertj.core.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class MemberServiceTest {
|
||||
|
||||
MemberService memberService = new MemberServiceImpl();
|
||||
MemberService memberService;
|
||||
|
||||
@BeforeEach
|
||||
void beforeEach() {
|
||||
AppConfig appConfig = new AppConfig();
|
||||
memberService = appConfig.memberService();
|
||||
}
|
||||
|
||||
@Test
|
||||
void join() {
|
||||
|
||||
@@ -1,18 +1,27 @@
|
||||
package com.example.basic.order;
|
||||
|
||||
import com.example.basic.AppConfig;
|
||||
import com.example.basic.member.Grade;
|
||||
import com.example.basic.member.Member;
|
||||
import com.example.basic.member.MemberService;
|
||||
import com.example.basic.member.MemberServiceImpl;
|
||||
import org.assertj.core.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class OrderServiceTest {
|
||||
|
||||
MemberService memberService = new MemberServiceImpl();
|
||||
OrderService orderService = new OrderServiceImpl();
|
||||
MemberService memberService;
|
||||
OrderService orderService;
|
||||
|
||||
@BeforeEach
|
||||
void beforeEach() {
|
||||
AppConfig appConfig = new AppConfig();
|
||||
memberService = appConfig.memberService();
|
||||
orderService = appConfig.orderService();
|
||||
}
|
||||
|
||||
@Test
|
||||
void createOrder() {
|
||||
|
||||
Reference in New Issue
Block a user