Я изучал класс StringTokenizer.java
, и было несколько вопросов, которые приходили на ум.
Я заметил, что публичные методы, которые должны использоваться другими классами, вызывали какой-то частный метод, который выполнял всю работу. Теперь я знаю, что одним из принципов 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);
}
}
Vs...
public class Sum{
public int getSum(int a, int b){
return a+b;
}
}
Как первый пример полезнее?