Tengo un WifiComponenten mi Cameraaplicació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 WifiComponentse 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 WifiComponentestá habilitada. Luego construyo la subclase apropiada de WifiComponent, ya sea WifiComponentImplo NullWifiComponent.
Implementar los métodos supportedWifiTypes()y wifiScan()es fácil. El NullWifiComponentno 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 WifiEncryptionTypeprovisto en el WifiNetwork! La implementación real arroja un IllegalArgumentExceptionsi pasa una WifiEncryptionTypered wifi no compatible .
¿Yo ...
- Lanzar
IllegalArgumentException, porque no apoyo loWifiEncryptionTypesolicitado? - 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?
WifiEncriptionTypepor lo que no debe arrojarlaIllegalArgumentException. Por lo tanto, no creo que arrojarlo sea un incumplimiento de contrato.