순수한 자바로 먼저 공부!
인텔리제이를 이용 Java 11 Gradle 이용
좋은 객체 지향 설계의 5가지 원칙을 SOLID라고 함!
SOLID란?
SRP : 단일 책임 원칙
- 하나의 클래스는 하나의 책임만 가진다, 중요한 기준은 변경, 변경이 있을 때 파급효과가 적으면 책임 원칙을 잘 따름
OCP : 개방-폐쇄 원칙
- 소프트웨어 요소는 확장에는 열려 있어야 하나, 변경에는 닫혀있어야 함, 다형성 활용
- 구현 객체를 변경하려면 클라이언트 코드를 변경해야 한다
LSP : 리스코프 치환 원칙
- 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀수 있어야함
- 자동차 엑셀을 밟으면 앞으로 가는 기능, 뒤로 가게 구현하면 LSP를 위반한 것 , 느리더라도 앞으로 가게
ISP : 인터페이스 분리 원칙
- 특정 클라이언트를 위한 인터페이스를 분리함 자동차 인터페이스 -> 운전 인터페이스, 정비 인터페이스 등등
- 인터페이스가 명확해지고, 대체 가능성이 높아짐
DIP : 의존관계 역전 원칙
- 프로그래머는 "추상화에 의존해야지, 구체화에 의존하면 안됨" 쉽게 구현 클래스에 의존하지말고, 인터페이스에 의존
설계를 간단하게 만들어 본다.
비즈니스 요구 사항과 설계
회원
- 회원 가입을 하고 조회 가능
- 회원은 일반과 VIP 두 가지 등급
- 회원 데이터는 자체 DB 구축 가능, 외부 시스템과 연동 가능 (미확정)
주문과 할인 정책
- 회원은 상품 주문 가능
- 회원 등급에 따라 할인 정책 적용 가능
- 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인 적용 (나중에 변경 가능)
- 할인 정책은 변경 가능성이 높음. 회사의 기본 할인 정책을 아직 안정했음, 오픈 직전까지 미룰 수 있음
일단 회원의 클래스를 만들고
인텔리제이 에서는 Enum으로 등급을 만들 수 있다.
설계에 맞게 코드를 작성하고, 테스트 코드를 작성할 줄 알아야 한다.
'Spring' 카테고리의 다른 글
스프링 : 관심사의 분리 (0) | 2021.12.14 |
---|---|
스프링 : 메인 스크롤 이벤트 모바일 처리 , 모바일 CSS 수정 (0) | 2021.12.09 |
스프링 : 스프링 , 인텔리 제이 & 그레이들 사용 (0) | 2021.12.09 |
스프링 : HTML, HTTP API, CSR, SSR (0) | 2021.12.08 |
스프링 : 멀티 쓰레드 (0) | 2021.12.08 |