2014-10-17 6 views
0

Abstract Factory에서 데이터 액세스 개체 패턴을 구현하여 클라이언트 코드에서 여러 데이터 원본에 대한 액세스를 추상화하려고합니다. 나는 아래 링크를 참조했다.구성 데이터를 Java DAO의 구체적인 구현에 전달

http://www.oracle.com/technetwork/java/dataaccessobject-138824.html

내 질문은 : - 어떻게 DAO의 구체적인 구현에 내 클라이언트 코드에서 (데이터 파일의 경로와 같은) 구성 데이터를 전달할 수 있습니까?

위에서 붙여 넣은 링크에는 예제 9.2에 하드 코딩 된 DBURL 및 DRIVER를 사용하는 구체적인 구현 예가 나와 있습니다. 예제 9.6에 나와있는 클라이언트 코드에서이 두 가지를 전달해야한다면 어떻게해야할까요?

답변

0

DAOFactory.getDAOFactory 함수 (예 : 연결 url, 사용자 등을 저장하는 ConnectionParams 객체)에 plus 매개 변수를 추가 한 다음 DAOFactory 구현의 생성자에 전달합니다. 그런 다음 DAOFactory는 ConnectionParams를 사용하여 연결을 생성 할 수 있습니다.

이 경우 createConnection 메서드가 정적이어서는 안됩니다.

ConnectionParams 객체는 다음과 같이 할 수있다 : 당신의 DAOFactory 구현이 파일 인수가 필요합니다 `

public class ConnectionParams { 

    private String url; 
    private String pass; 
    private String file; 

    /* getters and setters */ 
} 

`

경우, 파일 필드를 사용할 수 있습니다. 다른 사람들은 url과 pass를 사용할 수 있습니다.

다른 해결책은 공통 속성 파일이나 System.properties에서 필요한 매개 변수를 가져 오는 것입니다.

+0

감사합니다. DAFactory.getDAOFactory 메소드는 "whichFactory"인수에 따라 구체적인 팩토리를 리턴합니다. 내 경우에는 전달하려는 매개 변수가 하나의 데이터 소스에서 다른 데이터 소스로 변경됩니다. 예를 들어, DB 소스에 대한 연결 URL이 필요하지만 플랫 파일 데이터 소스에 대한 데이터 파일 경로가 필요합니다. 그렇다면이 문제를 일반적으로 어떻게 처리 할 수 ​​있을까요? –

+0

원래 답변을 새로 고쳤습니다. – traianus

+0

감사합니다. 귀하의 답변이 도움이됩니다. –

관련 문제