Quel est l'aspect de la programmation orientée?
Je comprends la programmation orientée objet, et ont été écrit OO programmes pour une longue période de temps. Les gens semblent parler de la programmation orientée aspects, mais je n'ai jamais vraiment appris ce que c'est ou comment l'utiliser. Qu'est-ce que le paradigme de base?
Cette question est liée, mais ne pas tout lui demander:
Programmation Orientée aspects vs la Programmation Orientée Objet
- IMAO, le lien fourni dans la question est plus claire et approfondie de la réponse que l'on a accepté un ici. Les gens qui lisent cette question peut lire en premier.
Vous devez vous connecter pour publier un commentaire.
AOP aborde le problème de la transversales préoccupations, ce qui serait tout type de code est répété dans de méthodes différentes et ne peuvent en général pas être complètement remaniée dans son propre module, comme avec l'exploitation forestière ou de la vérification. Ainsi, avec AOP, vous pouvez laisser ce genre de choses hors de la main de code et de le définir à la verticale comme suit:
Et puis un aspect weaver est utilisé pour compiler le code en ceci:
Malheureusement, il semble être étonnamment difficile de faire de l'AOP vraiment utile dans un milieu de grande taille de l'organisation. (Le support de l'éditeur, sentiment de contrôle, le fait que vous commencez avec le pas ainsi les choses importantes menant à la code de la pourriture, des gens qui vont à la maison à leurs familles, etc.)
J'ai mis mes espoirs de composite de la programmation orientée, qui est quelque chose de plus et plus réaliste. Il se connecte à de nombreux populaire, les idées et vous donne quelque chose de vraiment cool.
Oeil à une place et à venir de la mise en œuvre ici: qi4j.org/
PS. En fait, je pense que l'une des beautés de l'AOP est aussi son talon d'achille: Sa non-intrusif, de laisser les gens l'ignorent s'ils le peuvent, de sorte qu'il sera traité comme une préoccupation secondaire dans la plupart des organisations.
Copié à partir d'un duplicata pour l'exhaustivité (Einstein):
Les exemples classiques sont la sécurité et la journalisation. Au lieu d'écrire du code dans votre application pour se connecter occurrence de x ou de vérifier l'objet z pour la sécurité de contrôle d'accès il y a un langage engin "hors bande" de code qui peut systématiquement injecter de la sécurité ou de l'exploitation forestière dans les routines qui ne sont pas nativly les avoir dans une telle façon que même si le code ne nécessite pas d'alimentation, sa prise en charge.
Un exemple plus concret est le système d'exploitation en fournissant les contrôles d'accès à un fichier. Un logiciel n'a pas besoin de vérifier les restrictions d'accès parce que le système sous-jacent ne fait que travailler pour elle.
Si vous pensez que vous avez besoin de l'AOP dans mon expérience, vous avez vraiment besoin d'investir plus de temps et d'efforts appropriés de gestion des meta-données au sein de votre système, avec un accent mis sur le bien pensée structurelle /conception de systèmes.
Copié à partir du Printemps en Action
Copié à partir d'un duplicata pour l'exhaustivité (Buzzer):
De la classe et de la méthode attributs .NET sont une forme de programmation orientée aspects. Vous décorer vos classes/méthodes avec des attributs. Derrière les coulisses de cette ajoute le code de votre classe/méthode qui effectue les fonctions particulières de l'attribut. Par exemple, le marquage d'une classe sérialisable lui permet d'être sérialisé automatiquement pour le stockage ou la transmission à un autre système. D'autres attributs peuvent marquer certaines propriétés non sérialisable et celles-ci seraient automatiquement omis de l'objet sérialisé. La sérialisation est un aspect, mis en œuvre par un autre code dans le système, et appliquer à votre classe de l'application d'une "configuration" de l'attribut (décoration) .
Il est un exemple de l'AOP, il ressort de l'AOP comme un exemple. L'exemple est assez facile à comprendre.
Spring AOP (Aspect oriented programming) cadre est utilisé pour modulariser les sujets transversaux dans les aspects. Faire simple, c'est juste un intercepteur d'intercepter certains processus, par exemple, lorsqu'une méthode est exécutée, Spring AOP peuvent s'approprier la méthode d'exécution, et d'ajouter des fonctionnalités supplémentaires avant ou après l'exécution de la méthode.
Référence: http://www.mkyong.com/spring/spring-aop-examples-advice/
AOP peut être utilisé pour effectuer des actions qui ne sont pas liées à la logique métier de votre application, comme l'exploitation forestière, la mise en cache, etc. Ces actions peuvent être mis dans une partie distincte de votre application, puis réutilisé tout au long de l'application. Il y a généralement deux façons d'y parvenir. L'injection de code automatiquement par un préprocesseur avant/après d'une méthode, ou d'attacher des classes proxy d'interception d'un appel de méthode et pouvez alors exécuter des choses avant/après un appel de méthode.
Ici est un exemple .Net. Il utilise des classes proxy pour intercepter les appels de méthode
et d'exécuter du code avant ou après saif appels de méthode.
La Programmation Orientée aspects (AOP) dans .NET de Base et C# à l'aide de AutoFac et DynamicProxy
L'AOP est une meilleure façon de modulariser votre demande de fonctionnalités qui s'étend sur plusieurs limites. L'AOP est un autre moyen d'encapsuler ces caractéristiques et suivez l'Unique Responsabilité en déplaçant ces transversales préoccupations (exploitation forestière, la gestion des erreurs, etc.) de les principaux composants de votre application. Pendant l'utilisation appropriée de l'AOP peut conduire à des niveaux plus élevés de la maintenabilité et de l'extensibilité dans votre application au fil du temps.