Частные методы вместо общедоступных

Я исследовал класс StringTokenizer.java и обнаружил w вопросы, которые приходили в голову.

Я заметил, что общедоступные методы, которые должны использоваться другими классами, вызывают некий частный метод, который выполняет всю работу. Теперь я знаю, что один из принципов OOD - сделать как можно больше приватного и скрыть все детали реализации. Я не уверен, что полностью понимаю логику этого.

Я понимаю, что важно сделать поля закрытыми, чтобы в них не хранились недопустимые значения (это лишь одна из многих причин). Однако, когда дело доходит до частных методов, я не уверен, почему они так важны.

Например, в случае класса StringTokenizer , не могли бы мы просто поместить весь код реализации в общедоступные методы? Как это повлияло бы на классы, использующие эти методы, поскольку API для этих методов (то есть правила для вызова этих общедоступных методов) остались бы прежними? Единственная причина, по которой я мог думать о том, почему частные методы полезны, заключается в том, что они помогают вам писать дублированный код. Например, если все общедоступные методы выполняли одно и то же, то вы можете объявить частный метод, который выполняет эту задачу и который может использоваться общедоступными методами.

Другой вопрос, в чем преимущество написания реализации в частном методе по сравнению с открытым методом?

Вот небольшой пример:

public class Sum{

    private int sum(int a, int b){
        return a+b;
    }

    public int getSum(int a, int b){
        return sum(a,b);
    }
}

Против ...

public class Sum{

    public int getSum(int a, int b){
        return a+b;
    }
}

Чем больше первый пример выгодно?

28
задан wattostudios 30 April 2012 в 14:13
поделиться