|
이 섹션은 당신에게 Replace
Constructor With Factory Method 리팩토링 기능에 대해 포괄적인 overview와 how
이 리팩토링이 IntelliJ IDEA에서 사용될 수 있는가를 제공합니다.
Replace Constructor With Factory Method 리팩토링 기능은 당신이 콜을 그 클래스의 인스턴스를 생성하는 정적인 메소드로의 콜 위의 생성자로 교체할 필요가 있는 경우에 유용합니다.
예를 들면, 당신은 다음의 두 클래스를 가집니다:
public class Connection {
public Connection(String URL){
//some code here
}
}
public class ConnectionPool {
public Connection getConnection(String name){
Connection conn = new Connection(name);
}
//some code here
}
리팩토링 후의 코드는 이렇게 보일 것입니다:
private class Connection {
private Connection(String URL){
//some code here
}
public static Connection createConnection(String URL) {
return new Connection(URL);
}
}
public class ConnectionPool {
public Connection getConnection(String name){
Connection conn = Connection.createConnection(name);
}
//some code here
}
생성자 콜은 정적인 메소드 콜로 교체됩니다.
생성자를 팩토리 메소드로 교체하기 위해서:
1. 당신은 인스턴스가 자주 생성되는 클래스를 가질 필요가 있습니다.
2. 캐럿을 팩토리 모드로 교체될 생성자 위에서 설정하고 메인 메뉴에서 또는 에디터에서 오른쪽 버튼을 클릭하는 것에 의해 불려지는 팝업 메뉴에서 Refactor |
Replace Constructor With Factory Method...를 클릭하십시오
3. 당신은 Replace Constructor With Factory Method 다이얼로그를 보게 될 것입니다.

|
이름
|
|
팩토리 메소드에 대해 IDEA에 의해 제안된 하나를 선택하거나 당신 자신의 이름을 입력하십시오.
|
|
In (fully qualified
name)
|
|
팩토리 메소드가 위치되는 충분히 자격이 주어진 클래스 이름을 입력하십시오.
또 다른 방법은 필요한 클래스를 ellipsis 버튼을 눌러서 불려지는 Choose Destination Class 다이얼로그에서 찾는 것 입니다.
|
|
변경된 미리 보기 사용
|
|
체크 박스를 선택하면 당신에게 어떤 사용이 발견되었는지 계속 기억하고 있고, 그들의 교체를 승인하도록 허락합니다. 이 체크 박스가 선택되지 않을 때, IDEA는 교체를 자동적으로 수행합니다.
|

|
심지어 체크 박스가 확인되지 않았을 때도, 만일 발견된 사용이 어떤 읽기 전용 파일에서 존재하면 당신에게 사용 교체를 확인하기 위해 프롬프트 될 것 입니다.
|
Refactoring Preview 다이얼로그에서 (만일 그것이 나타나면) 당신은 수행된 변경을 분석할 수 있습니다. 리팩토링과 함께 진행하기 위해서, Do
Refactor를 클릭합니다, 그렇지 않다면 Cancel 을 클릭합니다. 상세한 것을 보려면 Refactoring
Preview를 보십시오.
|
|
리팩토링을 적용하면서 당신은 다음을 알아야 합니다:
1. 새로운 팩토리 메소드는 생성자의 것과 똑같은 가시성을 얻습니다.
2. 생성자는 팩토리 메소드(예를 들면, private 만일 양쪽이 한 클래스 내에 위치한다면)에 의해 액세스 가능한 최소의 가시성이 주어집니다.
3. 일부 특별한 이슈는 내부 클래스와 관계가 있습니다. 팩토리 메소드는 외부 클래스 중의 한 개에서만 생성될 수 있습니다.
|