Sto impostando un validatore di dati che itererà attraverso le righe di un foglio di calcolo e, per ogni colonna, eseguirà un controllo di convalida. Stavo pensando che questo potrebbe essere un compito appropriato per il modello di strategia come segue:
interfaccia IValidator:
public function isValid(rng as range) as boolean
end function
application validator_Number:
'checks whether or not value is a number
implements IValidator
public function IValidator_isValid(rng as range) as boolean
IValidator_isValid=isnumeric(rng.value)
end function
application validator_Capitalized:
'checks whether all letters are capitalized in value
implements IValidator
public function IValidator_isValid(rng as range) as boolean
IValidator_isValid=isnumeric(rng.value) and (ucase(rng.value)=rng.value)
end function
correttore di verifica:
'iterates through worksheet cells, validating them and
public sub validationChecker()
dim headerRow as long
dim validator as IValidator
headerRow=1
for row=2 to maxRow
for column=1 to maxColumn
'check the column header name and instantiate
'validator using the appropriate implementation
select case sheet.cells(headerRow,column).value
case "NAME"
set validator=new validator_Capitalized
case "AGE"
set validator=new validator_Number
'etc.
end select
if validator.isValid(sheet.cells(row,column)) then
doSomething()
endif
next
next
Ho precedentemente chiesto un'altra domanda sull'utilizzo di Strategy per convalidare i dati Excel e la risposta è stata che non avevo bisogno di farlo perché c'erano solo alcuni tipi di test e quindi le regole potevano essere conservate in un data store. Ma qui ci saranno molti diversi tipi di test di validazione, alcuni dei quali hanno diverse linee di codice. L'implementazione della strategia che ho delineato sopra il modello più appropriato da utilizzare qui?