티스토리 뷰

애플리케이션을 설계하면서 검색을 하다보면, A는 B에 의존한다 라는 표현을 자주 보았다.

물론 옛날부터 봐왔었지만, 요즘들어 확실하게 이해되는 느낌이 들어 정리를 해보려고한다. 

 

🟩 A가 B에 의존한다 의미

A가 B를 알아야 하고, B 없이는 동작할 수 있으면A는 B에 의존한다. 

이해를 돕기 위해서 레이어드 아키텍처의 서비스와 도메인 계층을 예시들어보겠다. 

 

서비스는 애플리케이션의 흐름을 조절하는 역할을 한다. 

도메인은 애플리케이션의 규칙을 처리하는 역할을 한다. 

 

이때,

서비스는 도메인에 의존하고, 도메인은 서비스에 의존해서는 안된다

아래는 현재 내가 만들고 있는 체스게임의 서비스계층 클래스이다. 

( 도메인 계층까지 다 만들고, 서비스는 만드는 중이다. ) 

public class GameService {
    ChessBoard chessBoard;
    UserInput userInput;

    public GameService(UserInput userInput, ChessBoard chessBoard) {
        this.userInput = userInput;
        this.chessBoard = chessBoard;
    }

    public void startGame() {
        System.out.println("---- 이름을 입력해주세요 ----");
        System.out.println("유저1 네임 :");
        String user1name = userInput.enterUserName();
        System.out.println("유저2 네임 :");
        String user2name = userInput.enterUserName();
        System.out.println();

        SetGameTurn setGameTurn = new SetGameTurn();
        GameTurn turn = setGameTurn.setGameTurn();

        while (true) {
            System.out.println("---- 피스를 선택해주세요 ----");
            int[] position = userInput.enterPosition();
            System.out.println("---- 피스를 놓아주세요 ----");
            while (true) {
            	// (도메인 요소들)
                System.out.println("---- 놓을 수 없는 위치입니다. ----");
                // (도메인 요소들)
            }
            // (도메인 요소들)
        }
        // (도메인 요소들)

    }
}

즉, 서비스는 piece.canMoveTo(x, y)와 같은 도메인 요소들을 이용하여 애플리케이션의 흐름을 조절한다.

다시 말해, 서비스는 도메인 요소가 없으면 동작할 수 없으니, 서비스는 도메인에 의존한다라고 말할 수 있다. 

하지만, 도메인은 서비스를 알면 안된다(=의존해서는 안된다).

 

도메인계층의 역할은 아까 말했듯이 애플리케이션의 규칙과 관련된 로직을 처리해야하지, 애플리케이션의 흐름을 제어할 필요는 없다. 

public class Piece {
    private GameService service; // XXX
}

이러한 구조는 안된다는 의미이다. 

 

 

여기까지 A가 B에 의존한다는 표현을 레이어드 아키텍처에 적용하여 간단하게 정리해보았다. 

현재 만들고 있는 체스게임을 다 만들고 나면 도메인 서비스라는 도메인 계층의 객체도 정리해볼 생각이다. 

End. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함