Come si pensa alla progettazione orientata agli oggetti e alla progettazione orientata all'aspetto per la soluzione

2

Ho lavorato su pochi progetti in cui sono stati utilizzati sia il paradigma AOP che Object oriented. Tuttavia, l'utilizzo di AOP era limitato alla sola registrazione. Penso che AOP sia una tecnica molto più potente. La mia domanda, a coloro che hanno lavorato con entrambi i paradigmi AOP e OOP nei progetti, è, come fanno a trovare una soluzione, combinando questi potenti paradigmi. Pensano prima AOPwise e poi progettano oggetti o viceversa. La mia domanda generale a coloro che hanno ampiamente utilizzato AOP è se la trovano una potente tecnica di modularizzazione. Se sì, si prega di citare esempi.

    
posta sushant 24.04.2011 - 11:20
fonte

3 risposte

1

Nella mia esperienza, OOP e AOP non si escludono a vicenda. AOP si riferisce all'incapsulamento di problemi separati come sottosistemi e all'esposizione di ciascuno attraverso un modello fascade ad altre preoccupazioni o al dominio dell'applicazione stesso. OOP è la tecnica più utilizzata per scrivere i moduli (anche se ci sono stili funzionali nei linguaggi OOP che ho reiterato qui: È un paradigma di programmazione orientato agli oggetti obsoleto poiché è anti-modulare e anti-parallelo? ).

Come per la registrazione o altre risorse condivise, di solito è un singleton e reso accessibile a molte di queste preoccupazioni.

    
risposta data 24.04.2011 - 11:55
fonte
1

Penso a OOP come al concetto che mi consente di modellare il business, mentre AOP mi fornisce la possibilità di modellare l'infrastruttura tecnica (logging, transazioni, sicurezza) necessaria per focalizzarmi sulla logica di business nel mio codice OOP. Non posso darti una prova del perché questo funzionerebbe meglio, ma penso che sia un'euristica ragionevole per ottenere una soluzione che capirai ancora qualche anno dopo l'inizio.

    
risposta data 24.04.2011 - 18:17
fonte
0

Alcune cose sono meglio espresse come OOP e altre sono migliori come AOP, e possono funzionare piuttosto bene insieme. (Attenti a chiunque cerchi di dirvi che una cosa è universalmente migliore di un'altra, la vita non è mai così chiara. Lasciate che forniscano prove della loro richiesta, e quindi valutate se ha senso per voi stessi. )

OOP funziona particolarmente bene se si dispone di funzionalità espresse come "applica un'operazione a questo pacco di stato", specialmente quando al chiamante non è richiesto di conoscere troppo i dettagli di ciò che accade all'interno dell'operazione. Ad esempio, dicendo un Dog a wag tail .

AOP funziona meglio se si dispone di funzionalità racchiuse in un'altra operazione. Le transazioni sono il classico esempio di questo; è molto più facile prenderli bene quando puoi legarli alla vita naturale di qualche altro pezzo di codice come una chiamata al metodo. Anche la registrazione e il monitoraggio delle prestazioni funzionano bene.

Uso entrambi insieme nelle mie applicazioni. Sostengo che la combinazione è altamente utile (e Spring è un modo ragionevole di gestire tutti gli oggetti nell'app combinata). Il design generale è sicuramente OOP prima però; con AOP lo si appende ad un altro framework che fornisce la logica di business principale.

    
risposta data 24.04.2011 - 16:12
fonte

Leggi altre domande sui tag