Spero di postare questo nel giusto SX e l'ho taggato correttamente.
Ho un sistema legacy con cui creo aggiunte contenenti un oggetto elenco personalizzato.
Questo oggetto elenco può contenere due tipi di elementi, un altro elenco o un elemento.
Parte di un'attività corrente richiede che io apporti una modifica all'elenco in modo tale da escludere l'aggiunta di voci o elenchi dipendenti dal loro tipo o se si trovano in un altro elenco di uno diverso o dello stesso tipo.
Una serie di elementi può essere passata all'oggetto lista e vengono aggiunti uno alla volta in un ciclo.
Vorrei implementare le regole sul fatto che un articolo possa essere aggiunto a un elenco come una classe di regole di business separata in cui passo l'elenco e l'articolo alla classe rule e ricevo un valore booleano per decidere se l'elemento può essere aggiunto alla lista o no. Qualcosa sulla falsariga di:
function InsertItems(ArrayOfItems)
for each item in ArrayOfItems
if ruler.CanItemBeAddedToList(item, list) then
add(item)
end if
end for
end function
La lingua utilizzata per il sistema legacy è VB.NET, quindi lo stile BASIC dello pseudo-codice.
In termini generali è meglio avere una classe separata per contenere una regola come questa, o dovrebbe far parte della classe list o della classe item? Detto questo, più ci penso e più preferisco una classe dirigente per prendere la decisione piuttosto che incorporare la decisione nella lista. Non credo che dovrebbe essere incorporato nella classe dell'oggetto. Anche se puoi scrivere bene, ad es.
if item.CanBeAddedTo(list) then
add(item)
end if
Ma questo significa in effetti che l'oggetto deve conoscere gli elenchi, il che non va bene da un punto di vista di accoppiamento. D'altra parte, un elenco dovrebbe conoscere gli articoli, soprattutto dato che l'elenco non è generico?