Предположим, у меня есть интерфейс и его конкретная реализация, которую использует клиентский код. Теперь, используя шаблон прокси, который реализует этот интерфейс, я мог направлять запросы к интерфейсу по сети. Конечно, сетевое соединение может не работать, что может вызвать исключение.
Клиентский код, использующий интерфейс, получит неожиданное исключение. Я предполагаю, что в этой ситуации нарушается принцип LSP.
Но как в этом случае обрабатывать сетевые исключения, если им не разрешено распространяться за пределы интерфейса?
Вот некоторый код Java, чтобы пояснить, что я имею в виду:
interface Interface
{
abstract void method1();
abstract void method2();
abstract void method3();
}
class Implementation implements Interface
{
void method1();
void method2();
void method3();
}
class ProxyOverNetwork implements Interface
{
// I can't add the NetworkException as it is not part of the Interface
// and would violate LSP, but how to handle the network problems then,
// when the ProxyOverNetwork might not be the right place to do so?
void method1() throws(NetworkException);
void method2() throws(NetworkException);
void method3() throws(NetworkException);
}
Должен ли я изменить интерфейс, чтобы разрешить распространение исключений?