TaskFactory에 패키지 위치에 대해서 궁금합니다.

2013-01-18 15:25

http://www.slipp.net/questions/36 에 패키지구조에 대한 글이 있었습니다.

기존에는 2안에 가까운 구조로 개발을 진행했었는데 위 글에서 1안으로 파일럿 개발을 진행해보았습니다. 1안으로 개발을 해본적이 없어서 1안으로 했을 때 편리한점이나 불편한점을 경험해보고자....ㅡㅡ;;;;

domain.Task 를 생성하는 TaskFactory에 패키지 위치에 대해서 궁금합니다.

Task 를 생성자를 통해 생성하지 않고 TaskFactory 를 사용해서 생성하려합니다. domain 의 생성 관점에서 domain 패키지인것 같기도한데요...

또 다른 케이스는 html 문서에 대한 스트림을 가지고 파싱해서 Result 를 만들어 내는 놈이 ResultParser 가 있습니다. 이 ResultParser 또한 domain 패키지에 존재 해야 할까요?

둘다 도메인을 생성하는 관점에서 보았을 때 domain 패키지에 있어야 할 것 같은데 클라이언트 입장에서 도메인 생성에 대한 서비스를 받는다라고 생각하니 ResultParser 에 경우에는 service 인것도 같습니다...

TaskFactory 가 순수하게 Task 만 생성하는 경우와 생성시점에 어떤 특정 로직을 수행 한다면 이는 service 로 볼 수 도 있지 않을까요??

1개의 의견 from SLiPP

2013-01-18 17:37

단지 Domain을 생성하는 용도라면 TaskFactory는 domain 패키지에 있어야 되지 않을까요?

html 문서를 파싱하는 작업과 프로젝트 전체에서 사용할 수 있는 라이브러리 성격은 저는 완전히 별개의 패키지로 분리합니다. 예를 들어 net.slipp.support.html과 같이 패키지를 만들고 html 패키지 안에 같이 둡니다.

만약 html 문서를 파싱해 User, Question과 같은 domain 클래스를 생성한다면 다음과 같은 구조가 될 듯 하네요.

net.slipp.support.html.HtmlParser net.slipp.domain.user.User net.slipp.repository.user.UserRepository => 여기서 앞에 구현한 HtmlParser를 생성해 User 객체를 생성할 듯 하네요.

일반적으로 DB에서 데이터를 읽어 domain 객체를 생성하는 역할을 Repository 또는 Dao가 하기 때문에 위와 같은 구조를 가집니다.

뭐 요구사항에 따라 달라지기 때문에 정답은 없지만 대략적으로 살펴본다면 위와 같은 구조가 될 듯 하네요.

의견 추가하기

연관태그

← 목록으로