Alternative all'ereditarietà di strutture complesse?

1

Sto lavorando su un progetto Webforms di ASP.NET, utilizzando il pattern MVP (che i presentatori possono conoscere usando un pattern di Page Controller). Mi viene assegnata una catena di eredità piuttosto complessa per i miei controllori. Di seguito viene mostrato un piccolo esempio della struttura che sto affrontando (è molto più grande nella mia app):

Unsaccodicodicetraquesticontrollerèduplicato(adesempio,lacreazionedicookieinRegisterPageControllereLoginPageController,l'accessoaidatideiclientiinProfilePageeBuyProductPage...),quindihodecisodiapplicaresistematicamenteilmodelloTemplateecreareunastrutturadiereditarietàchemiconsentirebbeperriutilizzareilpiùpossibileilcodice(ades.CreazionediunAuthenticatedPageControllercheverificachel'utentesiaautenticatoequindiBuyProductPageeProfilePageControllerereditanodaquestaclasse,riutilizzandolapartediautenticazionedelcodice).

Tuttavia,manmanocheprocedoalrefactoringdelmiocodiceeadapplicarepiùpatternTemplate,lacatenadiereditarietàiniziaadiventaresemprepiùcomplessae,avolte,cercaredicreareunanuovagerarchiatratuttelealtreclassidiventatropponoiosa.

Michiedevoseesistesseunapprocciomiglioreperaffrontareimieiproblemi.Holettodellacomposizione(holettoquestopost Alternativa a "eredità contro composizione?" ) ma non sono sicuro su come implementarlo né se questo sarebbe l'approccio migliore per il mio caso.

Qualcuno può illuminarmi?

Grazie.

    
posta David Jiménez Martínez 28.03.2014 - 12:21
fonte

2 risposte

6

Se diversi controllori necessitano del controllo dei cookie, lascia che mantengano un CookieController che gestirà quello.

Non è necessario che BuyProductController sia anche un AccountController solo perché ha bisogno dell'indirizzo di fatturazione.

    
risposta data 28.03.2014 - 12:29
fonte
0

Potresti anche dare un'occhiata al C # Decorator Pattern , che potrebbe essere utile per condividere le funzionalità tra classi senza eredità complessa.

    
risposta data 28.03.2014 - 13:30
fonte

Leggi altre domande sui tag