Eu tenho um WifiComponent
no meu Camera
aplicativo 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 WifiComponent
pode 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 Camera
no meu aplicativo cliente , pergunto à câmera se ela WifiComponent
está ativada. Então eu construo a subclasse apropriada de WifiComponent
, ou WifiComponentImpl
ou NullWifiComponent
.
A implementação dos métodos supportedWifiTypes()
e wifiScan()
é fácil. O NullWifiComponent
nã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 WifiEncryptionType
fornecido no WifiNetwork
! A implementação real lança um IllegalArgumentException
se você passar uma WifiEncryptionType
rede wifi não suportada .
Eu ...
- Jogue
IllegalArgumentException
, porque eu não apoio oWifiEncryptionType
solicitado? - 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?
WifiEncriptionType
lançaIllegalArgumentException
. Portanto, acho que não jogá-lo seria uma quebra de contrato.