Devo progettare una classe per le carte bancomat con i seguenti attributi:
- Nome del titolare della carta
- Numero carta
- Pin
Oltre ai getter e ai setter, ho un metodo per convalidare il pin dello sportello automatico. Secondo il principio di incapsulamento, tutti i metodi relativi allo sportello automatico dovrebbero far parte della classe ATM.
Ma nel caso, in seguito, dobbiamo modificare la logica aziendale del metodo di convalida. Non dovremmo modificare la classe secondo il principio Open-Closed ed estendere la classe e creare una nuova classe mi farà cambiare l'istanza della classe ATM dal progetto completo.
Un modo è avere un modello factory che mi dà l'oggetto ATM e in seguito quando estenderò la classe cambierò l'oggetto ATM nell'oggetto NewATM.
Ora ho le seguenti domande per il problema:
- Il metodo di validazione deve essere parte della classe ATM?
- C'è un altro modo più pulito per risolvere il problema?