Spring/[inflearn]스프링 핵심 원리 - 기본편(35)
-
새로운 할인 정책 개발
◎ 요구 사항 변경 -> 기존에 적용하던 할인 정책은 VIP 등급인 모든 회원에게 1000원을 할인해주는 정액할인 정책이다. 여기에서 주문 금액당 할인을 해주는 정률할인 정책으로 변경한다. -> RateDiscountPolicy 클래스 생성(정률 할인 정책 구현 클래스) /** * * VIP인 고객의 주문 금액의 10% 할인 적용 */ public class RateDiscountPolicy implements DiscountPolicy{ private int discountPercent = 10; // 10% 할인 @Override public int discount(Member member, int price) { if (member.getGrade() == Grade.VIP) { return pri..
2023.07.09 -
주문과 할인 도메인 설계
◎ 비즈니스 요구 사항 - 회원은 상품을 주문한다. - 회원 등급에 따라 등급에 해당하는 할인을 적용받을 수 있다. - 모든 VIP등급의 회원은 1000원을 할인해준다.(임시 정책으로 이후에 변경 가능성이 있다.) ◎ 주문 도메인 설계 -> 위 도메인 설계를 기반으로 아래와 같이 인터페이스와 클래스를 구현한다. ◎ 주문 도메인 개발 -> 할인 정책 인터페이스 /** * */ public interface DiscountPolicy { int discount(Member member, int price); // 할인 대상 금액 리턴 } -> 정액 할인 정책(할인 정책 인터페이스의 구현 클래스) /** * * 회원등급이 VIP인 회원에 대해 1000원 할인 */ public class FixDiscountP..
2023.07.06 -
비즈니스 요구 사항 정리 및 회원 관련 서비스 설계
-> https://start.spring.io/에서 아래와 같은 설정으로 스프링 프로젝트를 생성한다. ◎ 비즈니스 요구 사항 - 회원가입 및 회원 조회 기능 - 회원의 등급은 일반과 VIP로 구분 - 회원 데이터는 자체 db를 구축할 수 있고, 외부 시스템과 연동할 수도 있다. - 회원은 상품을 주문할 수 있다. - 회원 정책에 따라 할인 정책 적용 가능 - 할인 정책은 VIP등급인 회원에게는 1000원을 할인해준다 -> 고정 할인 정책(변경 가능) ◎ 회원 도메인 설계 -> 위 설계를 기반으로 아래와 같이 클래스와 인테페이스를 생성한다. ◎ 회원 도메인 개발 -> 회원 등급 /** * * 회원 등급을 정의 * 회원 등급은 BASIC, VIP가 있다. */ public enum Grade { BASIC..
2023.07.06 -
좋은 객체 지향 설계의 5원칙 - SOLID
◎ SOLID -> 좋은 객체 지향 설계의 5원칙이다. -> SRP(Single Responsiblity Principle) : 단일 책임 원칙 -> OCP(Open/Closed Principle) : 개방 폐쇄 원칙 -> LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 -> DIP(Dependency Inversion Principle) : 의존관계 역전 원칙 https://ko.wikipedia.org/wiki/SOLID_(%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%EC%84%A4%EA%B3%84) ◎ SRP -> 하나의 클래스는 하나의 책임만 가져야 한다. -> 책임에 대한 기준은 변경이며 변경으로 인한 파급효과가 적으면 단일 책임 원..
2023.06.27 -
객체 지향 설계와 스프링
◎ 스프링 -> 스프링 프레임워크, 스프링 부트 등 다양한 기술의 집합이다. -> 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계다. ◎ 스프링 부트 -> 스프링을 편리하게 사용하도록 지원하는 것 -> 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성 -> tomcat 같은 내장 서버가 내장되어 있어 따로 웹 서버를 설치하지 않아도 된다. ◎ 스프링의 핵심 개념 -> 스프링은 자바 언어 기반의 프레임워크 -> 자바의 특징은 객체 지향 언어라는 것인데 스프링은 객체 지향 언어의 특징을 극대화히는 프레임워크다. 좋은 객체 지향 애플리케이션을 개발하게 해주는 프레임워크 -> 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만든다. -> 다형성은 객체 지향 프로그래밍이 프로그램..
2023.06.26