Это законно или плохая практика для перемещения служебных методов в абстрактный суперкласс? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть интерфейс с его реализацией.Методы открытого интерфейса используют много частных методов для выполнения вычислений:

public class FooServiceImpl implements FooService {

    @Override
    public void method1() {
        calc1();
        calc2();
        ...
        ...
    }

    @Override
    public void method2() {
        calc1();
        calc2();
        ...
        ...
    }

    private Double calc1() {
        ...
        ...
    }

    private Double calc2() {
        ...
        ...
    }

    ...
    ...
}

Для лучшего обзора я разделил методы открытого интерфейса и служебные методы, переместив их в абстрактный класс:

public class FooServiceImpl extends AbstractFooService implements FooService {

    @Override
    public void method1() {
        calc1();
        calc2();
        ...
        ...
    }

    @Override
    public void method2() {
        calc1();
        calc2();
        ...
        ...
    }
}

.

public abstract class AbstractFooService {

    Double calc1() {
        ...
        ...
    }

    Double calc2() {
        ...
        ...
    }

    ...
    ...
}

Это законный образец или плохая практика?

...