스프링 핵심 원리 (2)
·
Spring
새로운 할인 정책 개발- 고정 할인이 아닌 정률 할인으로 구매 금액의 10%를 할인으로 변경 정률 할인 클래스package hello.core.discount;import hello.core.member.Grade;import hello.core.member.Member;public class RateDiscountPolicy implements DiscountPolicy { private int discountPercent = 10; @Override public int discount(Member member, int price) { if (member.getGrade() == Grade.VIP) { return price * discountPercen..
스프링 핵심 원리(1)
·
Spring
회원 도메인 설계회원 도메인 요구사항- 회원 가입, 조회 가능- 회원은 일반회원, VIP회원 두 가지 등급으로 관리- 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 회원 등급package hello.core.member;public enum Grade { BASIC, VIP} 회원 Entitypublic class Member { private Long id; private String name; private Grade grade; public Member(Long id, String name, Grade grade) { this.id = id; this.name = name; this.gra..
다형성(3) - OCP
·
Java
객체지향의 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만든다.- 레고 블럭 조립하듯- 키보드 마우스 갈아 끼우듯- 컴퓨터 부품 갈아 끼우듯- 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법  운전자(클라이언트), 자동차 역할(인터페이스) K3, 아반떼, 모델3 (구현체) 운전자는 자동차의 역할만 알면 된다. k3를 운전하다 아반떼를 운전한다고 운전을 못하게 되는건 아니다. 로미오 역할 (인터페이스)는 대본만 있다면 장동건이 하던, 원빈이 하던 아무 상관이 없다. 내가 들어가도 문제가 없다.(?) 줄리엣 역할도 마찬가지로 김태희가 하지 않는다고 해서 줄리엣 역할이 변하게 되는건 아니란 것이다. 역할과 구현을 분리하자역할과 구현으로 구분하면 세상이 단순해지고, 유연해지며 변경도 편리해진다.- ..