(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 3. 관심사의 분리 "애플리케이션 = 공연, 각 인테페이스 = 배역(역할), 구현 객체 = 배우" 라고 생각해보자. 그런데 실제 배역을 맞는 배우를 선택하는 것은 누가 하는가?? 이전 코드는 로미오 역할(인터페이스)를 하는 레오나르도 디카프리오 배우(구현 객체)가 줄리엣 역할(인터페이스)를 하는 올리비아 핫세 배우(구현 객체)를 직접 초빙하는 것과 같다. 디카프리오는 공연도 해야하고 동시에 여자 주인공도 직접 초빙해야하는 다양한 책임을 갖고 있다. 1. 관심사를 분리하자 - 배우는 본인의 역할인 배역을 수행하는 것에만 집중해야 한다. - 디카프리오는 어떤 여자 주인공이 선택되더라도 똑같이 공연을 할 수 있어야 한다. - 공연을 구..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 1. 새로운 할인 정책 개발 1. 새로운 할인 정책을 확장해보자 2. RateDiscountPolicy 추가 주문한 금액의 %를 할인해주는 새로운 정률 할인 정책을 추가하자. static import 3. RateDiscountPolicy 코드 추가 DiscountPolicy 를 구현한 정률 할인 정책 클래스를 만든다. package hello.core.discount; import hello.core.member.Grade; import hello.core.member.Member; public class RateDiscountPolicy implements DiscountPolicy{ private int discountPer..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 1. 주문과 할인 도메인 설계 - 1. 주문 도메인 협력, 역할, 책임 1) 주문 생성: 클라이언트는 주문 서비스에 주문 생성을 요청한다. - 실무에서는 상품이라는 객체를 만들어서 구현하지만 여기서는 간단하게 구현하기 위해 데이터(회원 id, 상품명, 상품가격)로 보낸다. 2) 회원 조회: 할인을 위해서 회원 등급이 필요하다. 그래서 주문 서비스는 회원 저장소에서 회원을 조회한다. (회원의 등급을 알기 위해서) 3) 할인 적용: 주문 서비스는 회원 등급에 따른 할인 여부를 할인 정책에 위임한다. 4) 주문 결과 반환: 주문 서비스는 할인 결과를 포함한 주문 결과를 반환한다. (참고) 실제로는 주문 데이터를 DB에 저장하지만 여기서..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 3. 회원 도메인 설계 1. 회원 도메인 협력 관계 2. 회원 클래스 다이어그램 클래스 다이어그램은 프로그램을 실행하지 않고 클래스만 분석해서 볼 수 있는 그림이다. 3. 회원 객체 다이어그램 MemberRepository 역할에 MemoryMemberRepository 를 넣을지 DbMemberRepository를 넣을지는 동적으로 결정되는 것들이다. 서버가 떠서 클라이언트가 실제로 사용하는 인스턴스 객체들을 보기위한 그림이다. 4. 회원 도메인 개발 1. 회원 엔티티 1) 회원 등급 회원 등급은 enum 으로 만든다. class 대신 enum 으로 선언하면 이 객체는 "상수의 집합"이라는 것을 명시한다. package hell..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 1. 프로젝트 생성 1. 사전 준비물 - Java 11 설치 - IDE: IntelliJ 설치 2. 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성 https://start.spring.io/ 1) 프로젝트 선택 Project: Gradle Project Spring Boot: 2.6.7(미정식 버전을 제외한 최신 버전) Language: Java Packaging: Jar Java: 11 2) Project Metadata groupId: hello artifactId: core 3) Dependencies: 선택하지 않는다. 3. Gradle 전체 설정 build.gradle 설정을 변경하면 코끼리 Click 혹은 ..