Anônimo vs classes internas nomeadas? - Melhores Práticas

Eu tenho uma classe, vamos chamá-lo de LineGraph, que renderiza um gráfico de linhas. Eu preciso subclassificá-lo, mas a classe derivada é usada apenas em um local e é acoplada à classe que a usa. Então, eu estou usando uma classe interna.

Vejo duas maneiras de fazer isso:

Classe interna anônima

public class Gui {
    LineGraph graph = new LineGraph() {
        // extra functionality here.
    };
}

Classe interna nomeada

public class Gui {
    MyLineGraph graph = new MyLineGraph();

    private class MyLineGraph extends LineGraph {
        // extra functionality here.
    }
}

Eu não sou fã de classes internas anônimas, porque, francamente, acho que parece realmente feio. Mas, no caso de uma subclasse que é usada apenas em um lugar, existe um exagero de classe interna nomeado? Qual é a prática aceita?

questionAnswers(15)

yourAnswerToTheQuestion