Se ho un numero di classi, diciamo una varietà di edifici di qualche tipo. Ognuno di questi edifici ha varie proprietà e alcune cose ecc.
Ora c'è una serie di operazioni che devo fare su questi edifici che sono tutti concettualmente uguali. Chiamiamo questo gruppo concettuale di operazioni Spostamento degli effluenti dell'edificio . Questa funzionalità è essenzialmente responsabile per l'esecuzione di metodi basati sulle informazioni di ogni edificio e quindi l'impostazione delle proprietà in altre aree del codice nonché l'impostazione di informazioni sull'edificio stesso (non può aiutare la necessità di impostare proprietà in altre aree al momento a causa delle attuali limitazioni di progettazione del sistema).
È importante notare che sebbene questi metodi siano concettualmente uguali e impostino molte delle stesse proprietà in varie classi, il modo in cui calcolano e ottengono questi valori sono diversi (condividono tuttavia un certo codice).
La mia domanda è se dovessi inserire il codice in una classe chiamata say EffluentBuildingDistribution o dovrei inserirlo in ogni classe della tua proprietà con metodi appropriati per eseguire essenzialmente lo stesso codice.
Quindi qualcosa del tipo:
public class EffluentBuildingDistribution
{
public void DistributeEffluent()
{
// parameters example only
DistributeBuildingHouse(var param1, var param2);
DistributeBuildingDogHouse(var param1, var param2);
DistributeBuildingSecondHouse(var param1, var param2);
}
// and various private methods to help work with the 3 methods some shared
// others not
}
o
public class HouseBuilding {
public void DistributeEffluent(var param1, var param2)
{
// do stuff
}
}
public class DogHouseBuilding {
public void DistributeEffluent(var param1, var param2)
{
// do stuff
}
}
O forse nessuna di queste opzioni !.
Non sono sicuro se mettere il codice sugli oggetti su cui stanno lavorando sia la strada da percorrere, o metterla in una classe che rappresenta concettualmente ciò che stiamo cercando di fare. Questo è un esempio del mio attuale dilemma, ma è anche una domanda di responsabilità generale su dove proporzionare metodi e azioni ecc.
Se non è abbastanza specifico o ha bisogno di ulteriori spiegazioni, ecc. fammelo sapere e proverò a spiegare meglio il mio problema.
EDIT: A causa di una comprensibile confusione con il mio uso del termine Struttura nel mio esempio, da allora l'ho cambiato in Edificio . Alcune delle risposte riportate di seguito si riferiscono a Structure, ma sono comunque valide in quanto non ho modificato il nucleo della domanda.