Tôi có một WifiComponent
trong Camera
ứng dụng khách hàng của tôi. Nó chịu trách nhiệm xử lý các chức năng liên quan đến Wifi của Camera. Camera đại diện cho một máy ảnh thế giới thực.
Điều này WifiComponent
có thể được kích hoạt (trong trường hợp tôi có thể thực hiện mọi việc với nó, như kiểm tra trạng thái kết nối và quét) hoặc bị vô hiệu hóa (trong trường hợp đó bạn không thể làm gì với nó, ngoài việc hỏi liệu nó có được bật không).
Khi tạo một ứng dụng kháchCamera
của mình , tôi hỏi máy ảnh xem nó có được bật không. Sau đó, tôi xây dựng lớp con thích hợp của , hoặc .WifiComponent
WifiComponent
WifiComponentImpl
NullWifiComponent
Thực hiện supportedWifiTypes()
và wifiScan()
các phương pháp là dễ dàng. Các NullWifiComponent
không hỗ trợ bất kỳ loại, là ngay lập tức thực hiện với quét và tìm thấy không có kết quả.
Nhưng bây giờ tôi phải thực hiện một bool connect(WifiNetwork network, String password)
phương pháp. Tôi muốn nói rằng tôi đã thất bại trong việc kết nối ... Nhưng tôi thậm chí không hỗ trợ WifiEncryptionType
được cung cấp trong WifiNetwork
! Việc triển khai thực sự sẽ ném IllegalArgumentException
nếu bạn vượt qua nó một WifiEncryptionType
mạng wifi không được hỗ trợ .
Tôi có ...
- Ném
IllegalArgumentException
, vì tôi không ủng hộWifiEncryptionType
yêu cầu? - Âm thầm không kết nối (
return false
), bất kể những gì được cung cấp?
Câu hỏi tổng quát:
Nếu việc thực hiện thực sự hoàn thành một hợp đồng và một phần của hợp đồng này là đưa ra các ngoại lệ cho một số đầu vào nhất định, thì việc thực hiện null có ưu tiên tính trung lập của nó hay hợp đồng không?
WifiEncriptionType
vì vậy nó không nên némIllegalArgumentException
. Vì vậy, tôi không nghĩ rằng không ném nó sẽ vi phạm hợp đồng.