V dnešním článku si ukážeme, jak lze pomocí
nástroje RefactoringNG snadno v celém projektu
nahradit volání konstruktoru voláním tovární metody.
Mějme třídu Position:

public class Position {

private int x;

private int y;



public Position(int x, int y) {

this.x = x;

this.y = y;

}

...

}



Doposud jsme vytvářeli instance třídy Position voláním konstruktoru, nyní však
chceme přejít k tovární metodě. Přidáme tedy třídu
Builder s tovární metodou:

public class Builder {



static Position create(int x, int y) {

...

}

}

Náhradu volání konstruktoru za volání tovární
metody popíšeme v RefactoringNG následujícím
pravidlem:

// new Position(<args>) -> Builder.create(<args>)

NewClass {

null,

List<Tree>,

Identifier [name: "Position"],

List<Expression> [id: args],

null

} ->

MethodInvocation {

List<Tree> { },

MemberSelect [identifier: "create"] {

Identifier [name: "Builder"]

},

List<Expression> [ref: args]

}

V NetBeans pak stačí tuto refaktorizaci provést a
je hotovo. A nebojte se, před vlastní změnou zdrojáku
vám NetBeans ukážou, jaké změny hodlají provést a
změny provedou jen s vaším souhlasem.

Máte nějaké zkušenosti s RefactoringNG?
Napište mi o tom! Rád si přečtu, k čemu jste
RefactoringNG použili, co vám na něm vyhovuje a co
postrádáte.