Ich habe ein WifiComponent
in meinem Camera
in meiner Client - Anwendung. Es ist für die Verwaltung der Wifi-bezogenen Funktionen der Kamera verantwortlich. Die Kamera repräsentiert eine reale Kamera.
Dies WifiComponent
kann 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 Camera
in meinem Client verwendeten Anwendung frage ich die Kamera, ob sie WifiComponent
aktiviert ist. Dann konstruiere ich die entsprechende Unterklasse von WifiComponent
entweder WifiComponentImpl
oder NullWifiComponent
.
Die Implementierung der supportedWifiTypes()
und wifiScan()
-Methoden ist einfach. Das NullWifiComponent
unterstü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 WifiEncryptionType
im WifiNetwork
! Die eigentliche Implementierung löst IllegalArgumentException
ein nicht unterstütztes WifiEncryptionType
WLAN-Netzwerk aus, wenn Sie es übergeben .
Muss ich ...
- Werfen
IllegalArgumentException
, weil ich dieWifiEncryptionType
angeforderte nicht unterstütze ? return false
Keine 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?
WifiEncriptionType
so dass sie das nicht werfen sollteIllegalArgumentException
. Ich denke also nicht, dass es eine Vertragsverletzung wäre, wenn man es nicht wirft.