본문 바로가기

자바3

관심사의 분리와 AppConfig OrderServiceImpl에서 할인정책이 변경될때 DIP와 OCP를 위반하는 경우가 발생했다. 어떻게 문제를 해결할 수 있을까 ? 클라이언트 코드인 OrderServiceImpl 은 DiscountPolicy 의 인터페이스 뿐만 아니라 구체 클래스도 함께 의존한다. 그래서 구체 클래스를 변경할 때 클라이언트 코드도 함께 변경해야 한다. DIP 위반 추상에만 의존하도록 변경(인터페이스에만 의존) DIP를 위반하지 않도록 인터페이스에만 의존하도록 의존관계를 변경하면 된다. 인터페이스에만 의존하도록 설계를 변경하자. 그런데 구현체가 없는데 어떻게 코드를 실행할 수 있을까? 실제 실행을 해보면 NPE(null pointer exception)가 발생한다.이 문제를 해결하려면 누군가가 클라이언트인 OrderS.. 2022. 3. 16.
주문과 할인 도메인 오늘의 목표 - 주문과 할인 도메인 설계, 개발, 테스트 할인 정책부터 만든다. discount 패키지안에 DiscountPolicy 인터페이스를 작성한다, 일단 정액 할인 정책의 구현체를 만든다 FixDiscountPolicy (정률 할인 정책은 다음에) 다음 Order 서비스를 만들기 위해 order 패키지를 생성하고 Order 클래스를 작성한다. 그 다음 OrderService 인터페이스를 작성한다. 그 다음 OrderServiceImpl 구현체를 작성한다. main 함수로 OrderApp 클래스를 작성하여 테스트 해본다. 결과를 눈으로 확인해야 하는 불편함이 있다. 다음은 Junit으로 넘어와 order 패키지를 생성하고 OrderServiceTest 클래스를 생성하여 테스트한다. 초록불이 뜨며 .. 2022. 3. 15.
회원관리예제 웹MVC 개발 오늘은 회원관리 웹MVC와 스프링 DB접근기술에 대해 공부했다. 회원 웹 기능 - 홈 화면 추가 controller 패키지안에 HomeController 클래스를 만든다. @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } home으로 return 하기 때문에 home.html 파일을 templates 패키지안에 만들어준다. Hello Spring 회원 기능 회원 가입 회원 목록 실행후 localhost:8080에 들어가면 이런 창이 나오게된다. MemberController에 이 코드를 추가한다. @GetMapping("/members/new") public String cr.. 2022. 1. 23.