Sto lavorando su un piccolo programma e ho pensato di usarlo come una possibilità per ottenere una migliore comprensione di cose che non ho mai usato prima, principalmente Interfacce ed Eredità dalle classi base.
Fondamentalmente si tratta di un programma di richiesta di utilizzo della struttura e dopo aver effettuato una richiesta è necessario inviare via email al richiedente tutte le informazioni che hanno compilato. Il modulo si suddivide in informazioni sulla richiesta principale (contatto, nome del gruppo, ecc.), Stanze della struttura, struttura e amp; attrezzatura della stanza, date richieste, documento esterno facoltativo. Ho separato ciascuna sezione del modulo nella loro classe personalizzata in modo da poter passare facilmente le informazioni tra i livelli ma quando ho inserito le informazioni nel modello di email ho riscontrato un problema. Le informazioni sulla richiesta e le informazioni sul documento esterno verranno visualizzate solo una volta per richiesta, in modo da poter trovare e sostituire facilmente i segnaposto che ho impostato. Le altre classi tuttavia possono avere più istanze per richiesta. Il modo in cui ho impostato per aggirare questo era questo
Ho creato 2 interfacce
Public Interface SingleInstance
Public function PlaceHolderReplace() as Hashtable
End Interface
Public Interface MultipleInstances
Public function PlaceHolderReplace(mi as string 'multiple instance place holder to replace) as string
end Interface
Con queste impostazioni mi sono reso conto che la funzione di sostituzione per ogni classe sarebbe stata la stessa in base al numero di istanze della classe presenti per richiesta, quindi ho deciso di creare 2 classi base che implementano l'interfaccia dall'alto.
Public Class SInstance
Implements SingleInstance
Public function PlaceHolderReplace() as Hashtable Implements SingleInstance.PlaceHolderReplace
(code adding placeholder names and class property values to hashtable)
End Function
End Class
Public Class MInstance
Implements MultipleInstances
Public function PlaceHolderReplace(strPlcHolder as String) as string Implements MultipleInstances.PlaceHolderReplace
(code to loop through all properties of current class and make changes to supplied string and return string with replacements)
End Function
End Class
Finora questo sta funzionando, posso combinare ogni serie di classi di istanze singole o multiple in 2 elenchi di interfacce e passarle attraverso le procedure di sostituzione necessarie che ho. Le singole istanze eseguono solo il ciclo di ciascuna tabella di hash restituita e apportano le sostituzioni. La procedura per sostituire tutte le istanze multiple isola tutti i segnaposti e loop di dati ripetuti attraverso tutte le classi nell'interfaccia restituendo una stringa combinata per tutte le istanze della classe specifica. Mentre stavo costruendo questo mi sono imbattuto in diverse domande a cui non potevo davvero rispondere.
-
Questo è davvero il miglior uso delle interfacce? Ha senso per l'ereditarietà perché ogni classe può eseguire una delle due funzioni in modo da creare due classi base e usare semplicemente l'ereditarietà per determinare quale correre ha senso Il problema è che le interfacce sono implementate solo in una classe ciascuna, quindi in realtà esistono solo in modo che io possa mettere le classi che non sono correlate in una lista.
-
influiscono sul rendimento? Con le classi di istanze multiple perché non correlate, inserendole in una singola lista, dovrei controllare la classe corrente e confrontare i segnaposti della proprietà con ciò che è nei ripetitori dei data place per accertarsi che esistano prima di sostituirli. In alternativa, se chiamassi esplicitamente la funzione di ogni classe, dovrei comunque controllare il segnaposto dei dati ripetuti per scoprire quale deve essere eseguito. Il modo in cui l'ho impostato sembra che richiederebbe più tempo perché ogni titolare di dati ripetuto deve scorrere ogni classe dell'elenco anche se non sono correlati.
-
Questo è il modo migliore per testare come funzionano le interfacce? Sarebbe davvero bello avere qualcosa a cui fare riferimento se ho una scoreggia cerebrale. Dal momento che tutto ciò che ottengo è la possibilità di inserire classi non correlate in una singola lista e questo potrebbe influire sulle prestazioni.
Ho potuto vedere come questa configurazione sarebbe d'aiuto quando questo programma ha bisogno di espandersi che mi è stato detto è quasi garantito che succeda, ma se si espanderà non voglio che le prestazioni soffrano a causa del modo in cui l'ho impostato . Qualsiasi aiuto con queste domande sarebbe fantastico, grazie.