Un progetto su cui sto lavorando attualmente sui modelli Informazioni sull'ordine. Al momento, c'è una classe con un gruppo di proprietà e funzioni che tutti gli ordini hanno in comune. Inoltre, alcuni dei nostri utenti hanno proprietà e / o funzioni personalizzate in cima all'ordine di base. Alcune di queste proprietà personalizzate sono condivise tra più utenti e alcune sono uniche per un determinato utente. La classe ha circa 50 proprietà diverse, ma un determinato utente potrebbe utilizzare solo 20 di tali proprietà.
Mi piacerebbe riprogettarlo in modo che le proprietà / funzioni di base siano separate dalle proprietà / funzioni personalizzate, ma non so come affrontarlo. Ho pensato di ereditare la classe base, ma un utente potrebbe avere 3 o 4 proprietà personalizzate differenti. Non esiste un'eredità chiara tra le proprietà personalizzate. Ho esaminato lo schema del decoratore, ma l'interfaccia sta cambiando, quindi non sembra adattarsi.
C'è un modo per farlo senza avere la classe monolitica?
Esempi:
Base Properties - OrderID, OrderDate, AccountId, etc.
Customized Properties - BackOrdered, PONumber, ContactPerson
Base Functions - PlaceOrder, CancelOrder
Customized Functions - AddContact, DiscountPriceByPercent
Quindi, alcuni utenti potrebbero avere solo la base, un utente potrebbe avere la base + BackOrdered e un altro utente potrebbe avere base + BackOrdered + PONumber.
Questo problema non è univoco per gli ordini, ho lo stesso problema con altri oggetti nel progetto. Sto cercando un modello / architettura per risolvere il caso generale piuttosto che un modo per gestire gli ordini.