Ich habe ein WifiComponentin meinem Camerain meiner Client - Anwendung. Es ist für die Verwaltung der Wifi-bezogenen Funktionen der Kamera verantwortlich. Die Kamera repräsentiert eine reale Kamera.
Dies WifiComponentkann entweder aktiviert werden (in diesem Fall kann ich Dinge damit tun, z. B. den Verbindungsstatus überprüfen und scannen) oder deaktiviert werden (in diesem Fall können Sie überhaupt nichts damit tun, außer zu fragen, ob es aktiviert ist).
Beim Erstellen einer Camerain meinem Client verwendeten Anwendung frage ich die Kamera, ob sie WifiComponentaktiviert ist. Dann konstruiere ich die entsprechende Unterklasse von WifiComponententweder WifiComponentImploder NullWifiComponent.
Die Implementierung der supportedWifiTypes()und wifiScan()-Methoden ist einfach. Das NullWifiComponentunterstützt keine Typen, ist sofort mit dem Scannen fertig und findet keine Ergebnisse.
Aber jetzt muss ich eine bool connect(WifiNetwork network, String password)Methode implementieren . Ich möchte sagen, dass ich keine Verbindung hergestellt habe ... Aber ich unterstütze nicht einmal die WifiEncryptionTypeim WifiNetwork! Die eigentliche Implementierung löst IllegalArgumentExceptionein nicht unterstütztes WifiEncryptionTypeWLAN-Netzwerk aus, wenn Sie es übergeben .
Muss ich ...
- Werfen
IllegalArgumentException, weil ich dieWifiEncryptionTypeangeforderte nicht unterstütze ? return falseKeine Verbindung herstellen ( ), egal was bereitgestellt wird?
Verallgemeinerte Frage:
Wenn die tatsächliche Implementierung einen Vertrag erfüllt und ein Teil dieses Vertrags darin besteht, Ausnahmen für bestimmte Eingaben auszulösen, sollte eine Nullimplementierung ihre Neutralität oder den Vertrag priorisieren?
WifiEncriptionTypeso dass sie das nicht werfen sollteIllegalArgumentException. Ich denke also nicht, dass es eine Vertragsverletzung wäre, wenn man es nicht wirft.