Tengo un WifiComponent
en mi Camera
aplicación en mi cliente. Es responsable de manejar la funcionalidad relacionada con Wifi de la cámara. La cámara representa una cámara del mundo real.
Esto WifiComponent
se puede habilitar (en cuyo caso puedo hacer cosas con él, como verificar el estado de la conexión y escanear) o deshabilitar (en cuyo caso no puede hacer nada con él, aparte de preguntar si está habilitado).
Al crear una aplicaciónCamera
en mi cliente , le pregunto a la cámara si WifiComponent
está habilitada. Luego construyo la subclase apropiada de WifiComponent
, ya sea WifiComponentImpl
o NullWifiComponent
.
Implementar los métodos supportedWifiTypes()
y wifiScan()
es fácil. El NullWifiComponent
no admite ningún tipo, se realiza instantáneamente con el escaneo y no encuentra resultados.
Pero ahora tengo que implementar un bool connect(WifiNetwork network, String password)
método. Quiero decir que no pude conectarme ... ¡Pero ni siquiera soporto lo WifiEncryptionType
provisto en el WifiNetwork
! La implementación real arroja un IllegalArgumentException
si pasa una WifiEncryptionType
red wifi no compatible .
¿Yo ...
- Lanzar
IllegalArgumentException
, porque no apoyo loWifiEncryptionType
solicitado? - Silenciosamente no se conecta (
return false
), sin importar lo que se proporcione?
Pregunta generalizada:
Si la implementación real cumple con un contrato, y parte de este contrato es lanzar excepciones para ciertas entradas, ¿una implementación nula debe priorizar su neutralidad o el contrato?
WifiEncriptionType
por lo que no debe arrojarlaIllegalArgumentException
. Por lo tanto, no creo que arrojarlo sea un incumplimiento de contrato.