Dichiarazione del problema
Ho intenzione di scrivere una libreria per controllare tutta una serie di relay, e sto solo cercando di pensare concettualmente in questo momento.
Ecco i miei vincoli di progettazione:
- Abbiamo un numero esatto di relè che devono essere controllati e questo numero non cambierà mai (perché una volta costruita una scheda non aggiungeremo mai i relè).
Ecco la mia architettura proposta:
- Avere una classe che rappresenta un relay.
- Ogni relay dovrebbe avere un metodo
Open
. - Ogni relay dovrebbe avere un metodo
Close
. - Avere una classe che rappresenta il circuito che aprirà / chiuderà tutti i relè.
- La classe contiene un gruppo di membri pubblici (uno per ciascun numero fisso di relè).
Quindi concettualmente la mia implementazione sarebbe simile a ...
RelayBoard myRelayBoard = new RelayBoard();
// establish a connection with the board
myRelayBoard.Connect();
// close a relay
myRelayBoard.RelayFive.Close();
// open a relay
myRelayBoard.RelayFive.Open();
// disconnect the board
myRelayBoard.Disconnect();
Sto discutendo se dovrei effettivamente usare l'incapsulamento qui. Di seguito, sono le mie ragioni per non che vogliono usare l'incapsulamento.
- Non penso perché ci sia un numero fisso
- Anche io non la penso così perché non contengono dati, la classe relay è solo un mezzo per controllarli.
- Inoltre, dovrei scrivere metodi
CloseRelay(5)
eOpenRelay(5)
... Ciò significa che il chiamante dovrebbe preoccuparsi di quale sia il nome del relè e che non sembra così conciso.
Domanda
La mia unica domanda qui è, dovrei usare l'incapsulamento e rendere invece i relè privati? Vorrei che le risposte riguardassero almeno le 3 preoccupazioni che ho sull'uso dell'incapsulamento.