plugins {
id 'java'
id 'application'
}
group = 'org.choongang'
version = '1.0-SNAPSHOT'
mainClassName = 'org.choongang.Application'
repositories {
mavenCentral()
}
dependencies {
testImplementation platform('org.junit:junit-bom:5.10.0')
testImplementation 'org.junit.jupiter:junit-jupiter'
}
test {
useJUnitPlatform()
}
tasks.jar {
manifest.attributes['Main-Class'] = 'org.choongang.Application'
}
Service : 기능
-DTO(Data Transfer Object) : 데이터 전달 목적의 객체
-Vaildator : 데이터 검증
-DAO(Data Access Object) : 데이터 접근 객체(DB 처리...)
-VO(Value Object)
DDD(Domain Driven Design) : 도메인 주도 설계
Domain : 전문가 영역
표현 계층 : View
도메인 계층
인프라 계층 : 공통 인프라(DB ...)
MSA(Micro Service Architecture)
-> 템플릿 메서드 패턴
run()
공통 (common())
메뉴 항목 (show())
입력 (prompt())
3) 뷰(View) : template
-Template 인터페이스
-Templates 클래스
5.Model 설계
기능- Service
-DTO,DAO, Validator ... 다른 객체의 협력을 통해서 하나의 기능을 완성
-회원이 입력한 데이터가 매개변수 -> 처리
회원 기능
:회원가입 -> 데이터베이스 접근
:로그인 -> 데이터베이스 접근
참고) 테이블및 시퀀스 생성
SQL> CREATE TABLE MEMBER (
2 USER_NO NUMBER(10) PRIMARY KEY,
3 USER_ID VARCHAR2(30) UNIQUE NOT NULL,
4 USER_PW VARCHAR2(65) NOT NULL,
5 USER_NM VARCHAR2(40) NOT NULL,
6 REG_DT DATE DEFAULT SYSDATE,
7 MOD_DT DATE
8 );
Table created.
SQL> CREATE SEQUENCE SEQ_MEMBER;
Sequence created.
S - 단일 책임 원칙 - 하나의 클래스는 하나의 책임을 가짐
O - 개방 폐쇄 원칙 - 확장에서는 열려 있고, 변화에는 닫혀있음
I - 인터페이스 분리 원칙
: 하나의 인터페이스에 설계항목을 너무 많이 X, 역할별로 인터페이스를 분리
: java.time 패키지의 핵심 클래스 , LocalDateTime
L - 리스코프 치환 원칙 - 서브 타입은 언제나 기반타입으로 교체 가능 (다형성)
D - 의존 역전 원칙 - 특정 대상을 직접 참조하기 보다는 그 대상의 상위 요소인 추상클래스 또는 인터페이스로 참조
위와 같은 방식으로 외부에서 통제하는 것이 유리함.