Domanda

Ho una domanda di progettazione. Quando si scrive un'applicazione dove ci sono diversi componenti che condividono alcuni attributi, e si differenziano per gli altri sia in termini di interfaccia grafica (Windows Forms) e back-end, come si potrebbe teoricamente avvicinarsi a questo?

Per esempio, Ho un'applicazione dove ho 4 diversi tipi di prodotto. I moduli per l'inserimento di tutti i dettagli del prodotto quota di 3 campi differenti. Finora, facile - avere una classe base, quindi ricavare i 4 moduli da questa classe di base. Tuttavia, dicono, 2 prodotti condividono un certo comportamento che è la stessa per entrambi. Certo, avrei potuto avere un'interfaccia che definisce i metodi, quindi hanno questi moduli di iscrizione 2 prodotto implementare questa interfaccia, ma dal momento che l'interfaccia non fornisce alcuna implementazione di default, non sarebbe uno spreco di farlo? Dal momento che avrei dovuto fornire un'implementazione in ogni classe e se è esattamente lo stesso, sarebbe codice di ripetizione.

ho potuto ovviamente mettere questo metodo nella classe base e hanno 2 forme che ne derivano. Se le mie forme condividono più di un elemento comune e non condividono gli altri elementi, quale sarebbe il modo più logico più sana per rappresentare questo senza dover strappare i miei capelli?

Nessuna soluzione corretta

Altri suggerimenti

Perché non hanno le 2 classi non correlati derivano direttamente dalla classe di base e quindi creare una nuova classe con la funzionalità comune e deriva dalla classe base e hanno le restanti due classi ereditano da quella nuova classe?

BaseClass
CommonClass : BaseClass
ClassA : BaseClass
ClassB : BaseClass
ClassC : CommonClass
ClassD : CommonClass

Un modo per ottenere un comportamento comune in due classi è per le due classi a contenere che il comportamento in quanto membro, invece di ereditare che il comportamento: per le forme, questo potrebbe significherebbe definire un 'controllo utente' (cioè un insieme riutilizzabile di controlli comuni).

Difficile da dire senza alcun layout specifico. generalmente, l'altra, forma spesso più flessibile del riuso sta facendo composizione invece di ereditarietà. In effetti, la gerarchia di controllo mostra quanto forte composizione può andare. Forse si può separare le parti del vostro utente in controlli personalizzati che vengono assemblati in base alle specifiche di layout del prodotto siete dopo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top