일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- php 프로그래밍 입문 문제풀이
- programmers
- 페이코 추천인
- php 프로그래밍 입문 3판
- php 프로그래밍 입문 솔루션
- 페이코 추천인코드
- 플러터 개발환경 설정
- 플러터
- 자바
- Java
- php 프로그래밍 입문 연습문제
- 스프링
- 페이코 친구코드
- php 프로그래밍 입문
- 한정 분기
- php 프로그래밍
- C
- 백준
- C언어
- spring
- 파이썬
- php 프로그래밍 입문 예제
- php
- SWEA
- 최단 경로
- 배열
- Flutter
- 페이코 초대코드
- 자바 스프링
- JAVA SPRING
- Today
- Total
목록자바 스프링 (68)
ImJay
[Java Spring] 2-20. 전체 흐름 정리 1. 새로운 할인 정책 개발 다형성 덕분에 새로운 정률 할인 정책 코드를 추가로 개발하는 것 자체는 아무 문제가 없음 2. 새로운 할인 정책 적용과 문제점 새로 개발한 정률 할인 정책을 적용하려고 하니 클라이언트 코드인 주문 서비스 구현체도 함께 변경해야함 주문 서비스 클라이언트가 인터페이스인 DiscountPolicy 뿐만 아니라, 구체 클래스인 FixDiscountPolicy 도 함께 의존 -> DIP 위반 3. 관심사의 분리 애플리케이션을 하나의 공연으로 생각 기존에는 클라이언트가 의존하는 서버 구현 객체를 직접 생성하고, 실행함 비유를 하면 기존에는 남자 주인공 배우가 공연도 하고, 동시에 여자 주인공도 직접 초빙하는 다양한 책임을 가지고 있음 ..
[Java Spring] 2-19. 새로운 구조와 할인 정책 적용 1. 처음으로 돌아가서 정액 할인 정책을 정률% 할인 정책으로 변경해보자. FixDiscountPolicy -> RateDiscountPolicy 어떤 부분만 변경하면 되겠는가? 2. AppConfig의 등장으로 애플리케이션이 크게 사용 영역과, 객체를 생성하고 구성(Configuration)하는 영역으로 분리되었다. 3. 그림 - 사용, 구성의 분리 4. 그림 - 할인 정책의 변경 FixDiscountPolicy RateDiscountPolicy 로 변경해도 구성 영역만 영향을 받고, 사용 영역은 전혀 영향을 받지 않는다. 5. 할인 정책 변경 구성 코드 AppConfig 를 다음과 같이 수정한다. package hello.core; i..
[Java Spring] 2-18. AppConfig 리팩터링 1. 현재 AppConfig를 보면 중복이 있고, 역할에 따른 구현이 잘 안보인다. 2. 기대하는 그림 3. 리팩터링 전 package hello.core; import hello.core.discount.FixDiscountPolicy; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import hello.core.member.MemoryMemberRepository; import hello.core.order.OrderService; import hello.core.order.OrderServiceImpl; public class App..
[Java Spring] 2-17. 관심사의 분리 1. 애플리케이션을 하나의 공연이라 생각해보자. 각각의 인터페이스를 배역(배우 역할)이라 생각하자. 그런데! 실제 배역 맞는 배우를 선택하는 것은 누가 하는가? 2. 로미오와 줄리엣 공연을 하면 로미오 역할을 누가 할지 줄리엣 역할을 누가 할지는 배우들이 정하는게 아니다. 이전 코드는 마치 로미오 역할(인터페이스)을 하는 레오나르도 디카프리오(구현체, 배우)가 줄리엣 역할(인터페이스)을 하는 여자 주인공(구현체, 배우)을 직접 초빙하는 것과 같다. 디카프리오는 공연도 해야하고 동시에 여자 주인공도 공연에 직접 초빙해야 하는 다양한 책임을 가지고 있다. 3. 관심사를 분리하자 배우는 본인의 역할인 배역을 수행하는 것에만 집중해야 한다. 디카프리오는 어떤 여..
[Java Spring] 2-16. 새로운 할인 정책 적용과 문제점 1. 할인 정책을 애플리케이션에 적용해보자. 2. 할인 정책을 변경하려면 클라이언트인 OrderServiceImpl 코드를 고쳐야 한다 public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); } 3. 문제점 발견 우리는 역할과 구현을 충실하게 분리했다. OK 다형성도 활용하고, 인터페이스와 구현 객체를 분리했다. OK OCP, DIP 같..
[Java Spring] 2-15. 새로운 할인 정책 개발 1. 새로운 할인 정책을 확장해보자. - 악덕 기획자: 서비스 오픈 직전에 할인 정책을 지금처럼 고정 금액 할인이 아니라 좀 더 합리적인 주문 금액당 할인하는 정률% 할인으로 변경하고 싶어요. 예를 들어서 기존 정책은 VIP가 10000원을 주문하든 20000원을 주문하든 항상 1000원을 할인했는데, 이번에 새로 나온 정책은 10%로 지정해두면 고객이 10000원 주문시 1000원을 할인해주고, 20000원 주문시에 2000원을 할인해주는 거에요! - 순진 개발자: 제가 처음부터 고정 금액 할인은 아니라고 했잖아요. - 악덕 기획자: 애자일 소프트웨어 개발 선언 몰라요? “계획을 따르기보다 변화에 대응하기를” - 순진 개발자: … (하지만 난 ..
[Java Spring] 2-14. 주문과 할인 도메인 실행과 테스트 1. main > java > hello.core 패키지 내에 OrderApp 클래스 생성 2. 코드 작성 package hello.core; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import hello.core.order.Order; import hello.core.order.OrderService; import hello.core.order.OrderServiceImpl; public class OrderA..
[Java Spring] 2-13. 주문과 할인 도메인 개발 1. main > java > hello.core 에 discount 패키지 생성 2. DiscountPolicy 인터페이스 생성 3. 코드 작성 package hello.core.discount; import hello.core.member.Member; public interface DiscountPolicy { /** * @return 할인 대상 금액 */ int discount(Member member, int price); } 4. FixDiscountPolicy 클래스 생성 5. 코드 작성 package hello.core.discount; import hello.core.member.Grade; import hello.core.me..
[Java Spring] 2-12. 주문과 할인 도메인 설계 1. 주문과 할인 정책 회원은 상품을 주문할 수 있다. - 회원 등급에 따라 할인 정책을 적용할 수 있다. - 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) - 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수도 있다. (미확정) 2. 주문 도메인 협력, 역할, 책임 2-1. 주문 생성: 클라이언트는 주문 서비스에 주문 생성을 요청한다. 2-2. 회원 조회: 할인을 위해서는 회원 등급이 필요하다. 그래서 주문 서비스는 회원 저장소에서 회원을 조회한다. 2-3. 할인 적용: 주문 ..
[Java Spring] 2-11. 회원 도메인 실행과 테스트 1. 앞서 클래스 다이어그램은 정적이고, 객체 다이어그램은 동적이라고 설명한 바 있다. 2. 이전 시간 클래스 다이어그램을 바탕으로 프로그램을 작성하였다. 이번에는 실행과 테스트로 객체 다이어그램에 대한 프로그램을 제작해보자. 3. hello.core 패키지 내에 MemberApp 클래스 생성 4. 코드 작성 package hello.core; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; public class MemberA..