Replace Constructor With Factory Method Refactoring  

 

섹션은 당신에게 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.   일부 특별한 이슈는 내부 클래스와 관계가 있습니다.  팩토리 메소드는 외부 클래스 중의 개에서만 생성될 있습니다.