Eu tenho um WifiComponentno meu Cameraaplicativo no meu cliente. É responsável por lidar com a funcionalidade relacionada à Wifi da câmera. A câmera representa uma câmera do mundo real.
Isso WifiComponentpode ser ativado (nesse caso, eu posso fazer coisas com ele, como verificar o status e a verificação da conexão) ou desativado (nesse caso, você não pode fazer nada com isso, além de perguntar se está ativado).
Ao criar um Camerano meu aplicativo cliente , pergunto à câmera se ela WifiComponentestá ativada. Então eu construo a subclasse apropriada de WifiComponent, ou WifiComponentImplou NullWifiComponent.
A implementação dos métodos supportedWifiTypes()e wifiScan()é fácil. O NullWifiComponentnão suporta nenhum tipo, é feito instantaneamente com a verificação e não encontra resultados.
Mas agora eu tenho que implementar um bool connect(WifiNetwork network, String password)método. Quero dizer que não consegui conectar ... Mas eu nem apoio o WifiEncryptionTypefornecido no WifiNetwork! A implementação real lança um IllegalArgumentExceptionse você passar uma WifiEncryptionTyperede wifi não suportada .
Eu ...
- Jogue
IllegalArgumentException, porque eu não apoio oWifiEncryptionTypesolicitado? - Falha silenciosamente ao conectar (
return false), não importa o que for fornecido?
Pergunta generalizada:
Se a implementação real cumprir um contrato, e parte deste contrato for lançar exceções para determinadas entradas, uma implementação nula deve priorizar sua neutralidade ou o contrato?
WifiEncriptionTypelançaIllegalArgumentException. Portanto, acho que não jogá-lo seria uma quebra de contrato.