클라이언트를 기준으로 분리
한다.자바로 게시판 모듈
개발을 하는 경우
- 게시글 작성
- 게시글 목록 조회
- 게시글 삭제
를 구현하는데 ArticleService
클래스를 구현하게 됩니다.
ArticleService
클래스 상의 목록 조회 기능
의 메서드 시그니처에 변경이 발생하는 경우ArticleService
클래스 수정 후 컴파일 → 요건.. 자바에서는 상관없는 케이스이긴하다소스 재컴파일
에 관련한 문제가 발생하지 않는다고 함.ArticleService
변경으로 이를 사용하는 게시글 작성 UI
와 게시글 삭제UI
도 다시 컴파일을 해야한다.불필요한 재 컴파일 → 의존성 전파
로 이어짐자신이 사용하는 메서드에만 의존
해야 한다는 원칙이다.ArticleService
인터페이스를 가 클라이언트가 필요로 하는 인터페이스로 분리해야함.public interface ArticleWriteService {
void writeArticle(Article article);
}
import java.util.List;
public interface ArticleListService {
List<Article> getArticleList();
}
public interface ArticleDeleteService {
void deleteArticle(int articleId);
}
public class ArticleService implements ArticleWriteService, ArticleListService, ArticleDeleteService {
@Override
public void writeArticle(Article article) {
// 게시글 작성 로직
}
@Override
public List<Article> getArticleList() {
// 게시글 목록 조회 로직
return null;
}
@Override
public void deleteArticle(int articleId) {
// 게시글 삭제 로직
}
}
public class WriteArticleUI {
public void display() {
ArticleWriteService writeService = new ArticleService();
Article article = new Article();
// 사용자 입력으로 article 생성
writeService.writeArticle(article);
}
}
public class ListArticleUI {
public void display() {
ArticleListService listService = new ArticleService();
List<Article> articles = listService.getArticleList();
// articles 출력
}
}
public class DeleteArticleUI {
public void display(int articleId) {
ArticleDeleteService deleteService = new ArticleService();
deleteService.deleteArticle(articleId);
}
}