Хорошо, я постараюсь объяснить это как можно больше.
У меня есть класс, скажем, MyLib, методы которого будут использоваться другим классом, скажем, классом Consumer.
В MyLib есть открытый метод Navigate (), который будет использоваться Consumer. Этот метод обеспечивает уровень абстракции для потребителя, так как он может обеспечить различные типы навигации, используя только этот метод. Следующий фрагмент кода предоставляет необходимую кодовую карту.
// this method will be exposed to the consumer class.
public bool Navigate (NavigationType type)
{
// this method will decide which private _navigateToXyz() method will be called.
switch (type)
{
case x: return _navigateToX();
case y: return _navigateToY();
case z: return _navigateToZ(arg1, arg2);
case a: return _navigateToA(arg3);
}
}
private bool _navigateToX() { }
private bool _navigateToY() { }
// two or three additional _navigateTo_() without any parameters
private bool _navigateToZ (arg1, arg2) { }
private bool _navigateToA (arg3) { }
Как показано выше, все частные методы, кроме двух, требуют передачи некоторых аргументов. Поэтому, если я придерживаюсь этого подхода, то я, по сути, должен также передать эти аргументы в Navigate () - те аргументы, с которыми ни один из других методов не должен иметь ничего общего.
Я сейчас так делаю. Но я хочу знать, есть ли лучший подход в этой ситуации?
ОБНОВЛЕНИЕ: После некоторого мозгового штурма, я думаю, что метод Navigate () не является обязательным, поскольку он просто вызывает соответствующий метод на основе переданного навигационного типа. Теперь, когда NavigationType известен вызывающему Navigate (), он сам может вызвать тот самый метод, который требуется, если эти методы представлены как общедоступные. Я надеюсь, что я ясно. Так имеют ли значение дополнительные параметры вообще сейчас? Перегрузка метода имеет больше смысла?