Web/Java (Spring+JSP)
Spring 핵심 원리 #2- 주문/할인 도메인 개발
# 주문과 할인 정책 - 회원은 상품을 주문 할 수 있다. - 회원 등급에 따라서 할인 정책을 적용할 수 있다. - 우선은 VIP는 1000원을 할인해주는 고정 할인금액 정책을 적용한다. (추후에 변경될수도 있다) - 아직 회사의 할인정책이 미정이다. 오픈 직전까지 고민을 미루고싶다. -> 할인 정책을 언제든 유연하게 바꿀 수 있도록 하는 것이 중요해 보인다. # 주문 도메인 다이어그램 1. 주문 생성 : 고객은 주문 서비스에 주문 생성을 요청한다. 2. 회원 조회: 할인을 위해서는 회원 조회가 필요하다. 주문 서비스는 회원 저장소에서 회원을 조회한다. 3. 할인 적용 : 주문 서비스는 회원 등급에 따른 할인 적용을 할인 정책에 위임한다. 4. 주문 결과 반환 : 주문 서비스는 할인 결과를 포함한 주문 ..
Spring 핵심 원리 #1- 회원 도메인 설계/개발/테스트
# 요구사항 => 보면 나중에 변경이 가능하거나 미정인 부분이 상당히 많다. 이 때문에 우선 인터페이스를 만들어 구현체를 언제든 갈아끼울수 있도록 설계하는 것이 중요하다. # 회원 도메인 설계 과정 -> 그려본 다이어그램을 확인해보면, DB가 우선 어떻게 될지 결정이 되지 않았기 때문에 저장소를 interface로 구현하고, DB에 따라서 구현체를 만들어 갈아끼우면 확장하기 쉬워진다. 1) 우선 회원 서비스를 실제로 실행하는 부분 인 MemberService를 추상화로 구현해둔 뒤에, 이를 직접 구현체인 MemberServiceImpl로 상속받는다. (최대한 확장을 위해 추상화-구현체 형태로 만들자) 2) 회원 DB에 접근하는 함수 부분(save,findById)등은 MemberRepository int..
객체지향 설계의 5원칙
- 응집도와 결합도 - 좋은 설계를 위해서는 결합도는 낮추고 응집도는 높여야 한다. - 결합도 : 모듈 ( 클래스) 간의 상호 의존 정도를 나타내는 지표로써, 이가 낮아야 모듈간의 상호 의존성이 줄어들어 객체의 재사용및 유지보수가 가능하다. -> 만약 A,B,C라는 클래스가 존재할때, B가 A 클래스에 의존하고, C가 B 클래스에 의존하고 있으면, A 클래스 하나를 수정하면 B,C 클래스를 모두 수정해야될 가능성이 존재한다. - 응집도 : 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로, 응집도가 높은 모듈이 하나의 책임에 집중하고 독립성이 높아져, 재사용과 유지보수가 용이하다. -> fileReader를 String에서 file로 변경한다. (하나의 클라이언트가 많은 기능을 갖고 있기 때문..