리팩토링 대상 - TeamCenter(저장소)와의 통신 library(SOA)를 사용하는 Class
. 통신 기능을 별도의 클래스(Manager)로 분리
. Manager의 클래스 변수로 Connection을 넣고, 메소드에서 가져다 사용하도록 작성
. Manager 생성자에서 connection을 맺고, 소멸자에서 logout
. IDisposable을 상속받아 Dispose()에 logout 기능 추가하여 using()을 사용할 수 있게 됨 (소멸자에서 logout 해주지만, 수동으로 연결 종료가 가능)
. DAO, DTO 분리 - Manager 내에서는 DAO, DTO를 모두 사용하나, 외부에서 Manager를 호출 할 때에는 DTO만 사용해, 통신과 관련 없는 클래스에서는 통신이나 DAO의 존재를 알지 못하도록 처리
https://jungwoon.github.io/common%20sense/2017/11/16/DAO-VO-DTO/
. DAO (Data Access Object) : DB와 통신
. DTO (Data Transfer Object) : 계층(Controller, View, BusinessLayer등)간의 데이터 교환을 위한 객체
. VO (Value Object) : DTO와 동일 개념이나 read only 속성