Spring Serviceimpl, DAOimpl

김상혁·2021년 3월 25일
1

개념정리

목록 보기
2/13

Spring Framework 프로젝트는 Service - Serviceimpl, DAO - DAOimpl 처럼 interface를 구현한 구조이다.

굳이 2개의 클래스를 만들어 사용하는 이유는 무엇일까?

Interface는 자바에서 다형성을 구현하는 역할이다. Interface를 사용함으로써 코드를 수정하지 않아도 클래스에서 사용하는 객체를 변경할 수 있기 때문이다.

다형성을 위한 구조이기 때문에 Interface와 Class가 1:1로 매칭되는 경우엔 굳이 나누지 않아도 된다.


만약 보험사 서비스라고 했을 때 고객이 보험을 가입하는 과정을 보자.

고객이 가입할 수 있는 보험은 자동차보험, 생명보험 2가지이다.

"자동차 보험의 경우 차에 대한 정보를,
생명 보험의 경우 질병에 대한 정보를 입력한다."

위 기능을 구현하려면 자동차 보험 가입 기능, 생명 보험 가입 기능 2가지가 필요하다

// Interface 사용하지 않을 경우
public class signUp() {

private Vehicle vehicle;
private Life life;

public void signUp(){
	this.vehicle = new Vehicle();
    this.life = new Life();
} 

public void signUp_Insurance(){ // 보험 가입 함수

    vehicle.singUp();
    // 혹은
    life.singUp();

} // 생명보험 가입

}
}

지금처럼 보험이 2가지라면 간단한 코드지만 보험이 하나 늘어날 때마다 n개의 함수(가입, 탈퇴, 정보수정 등등)가 늘어나게된다.

유지보수가 힘들어지고 코드를 읽기 힘들어진다.

// Interface 사용할 경우
class Vehicle implements Insurance(){}
class Life implements Insurance(){}


public class signUp() {

private Insurance insurance;

public void signUp(Insurance insurance){ // 생성자

	this.insurance = insurance;
    
}

public void signUp_Insurance() { // 보험 가입 함수
	this.insurance.singUp();
    
} 
}

아무리 많은 보험이 생기더라도 Insurance Interface를 implements하면 위 클래스 하나로 기능을 구현할 수 있다.

이렇게 하나의 Interface로 여러 Class 기능을 구현하는 것을 다형성이라 하고, 다형성을 통해 유지보수를 늘리기 위해 Service - Serviceimpl 구조를 사용한다.

0개의 댓글