DekGenius.com
Previous Section  < Day Day Up >  Next Section

Recipe 3.15 Converting Constructors to Factory Methods

3.15.1 Problem

You want to convert a constructor to a factory method.

3.15.2 Solution

In Eclipse 3.0, select a constructor declaration or a call to the constructor in the JDT editor, and then select Refactoring Introduce Factory.

This is an Eclipse 3.0-only solution. No equivalent solution exists for versions of Eclipse prior to 3.0.


3.15.3 Discussion

Eclipse 3.0 enables you to convert constructors into factory methods. To do that, you select a constructor declaration or a call to the constructor and then select Refactoring Introduce Factory.

For example, say you had this call to a class's constructor:

public class DisplayApp {

    private String text;
    
    public static void main(String[] args) {
        DisplayApp DisplayApp = new DisplayApp("Hello");
    }

    public DisplayApp(String text) {
        super( );
        this.text = text;
    }
}

Selecting the constructor call and then selecting Refactoring Introduce Factory opens the Introduce Factory dialog. Here, Eclipse 3.0 will suggest the factory name createDisplayApp. Click OK to accept that name. Eclipse then creates that new factory method, replaces the call to the constructor with a call to that method, and makes the original constructor private:

public class DisplayApp {

    private String text;
    
    public static void main(String[] args) {
        DisplayApp DisplayApp = createDisplayApp("Hello");
    }

    public static DisplayApp createDisplayApp(java.lang.String text) {
        return new DisplayApp(text);
    }

    /**
     * @param text
     */
    private DisplayApp(String text) {
        super( );
        this.text = text;
    }
}

    Previous Section  < Day Day Up >  Next Section