Tout d’abord, s’il vous plaît, posez vos mains sur votre poitrine et méditez : est-ce que je tombe amoureux de la vie, ou suis-je pris dans la vie ?
Je n’ai pas encore trouvé la réponse. Eh bien, vous pouvez lire ce qui suit. D'un point de vue sémantique, différentes expressions d'une même chose peuvent refléter les perspectives subjectives de différentes personnes. D'un point de vue philosophique, la vision du monde affecte la méthodologie. Nous regardons les choses sous différents angles et tirons parfois des conclusions complètement contradictoires, ce qui affecte notre manière de procéder. Les méthodes et les codes de conduite sont comme ça dans la vie réelle, et encore plus dans les langages de programmation colorés. Les modèles de programmation regorgent de diverses simulations du monde réel, notamment orientées processus, orientées objet et orientées aspect. Nous connaissons probablement déjà très bien les termes orienté processus et orienté objet. Le mot anglais pour aspects est aspects (parfois en termes de traduction, je pense que l'utilisation d'aspects peut exprimer de manière plus appropriée la connotation des aspects).
Pour les liens vers AOP, voir ici :
http://en.wikipedia.org/wiki/Aspect-ori ... rogramming
Les événements personnalisés dans YUI3 implémentent AOP
http://developer.yahoo.com/yui/3/event
Que sont les tranches ? Pour donner un exemple simple, chaque jour, nous nous rendons au travail, prenons le métro, prenons le bus, sortons avec nos copines, jouons à des jeux au cybercafé, allons au cinéma pour regarder des films..., nous devons faire beaucoup de choses dans une journée, tout le monde est un Objet, tout ce que nous faisons est La méthode de cet Objet, par exemple,
甲.上班();<br>乙.坐地铁();<br>丙.看电影();
En fait, nous pouvons voir les choses sous un autre angle. Les entreprises ont besoin que leurs employés viennent travailler, le transport ferroviaire a besoin que tout le monde le prenne et les cinémas projettent des films à tout le monde. Cela devient :
公司.need(甲)<br>地铁.carry(乙);<br>电影院.放电影给(丙);
De ce point de vue, non seulement les individus A, B et C sont des objets, mais les entreprises, les métros et les cinémas sont également des objets. Cette abstraction est l'aspect traditionnel orienté aspect. Dans la programmation js, le programme n'est généralement pas volumineux, il peut donc ne pas atteindre le point où une abstraction au niveau de l'aspect est nécessaire. Mais son principe événementiel rappelle facilement l'AOP. L'exemple précédent en js peut être :
.
someone.dosth();//OOPobject.fire('event',someone);//AOP
S'il est vu hors contexte, le code ci-dessus est toujours sémantiquement tiré par les cheveux. C'est juste que de nombreux frameworks js encapsulent les fonctionnalités avancées de la programmation d'aspect dans des méthodes, ce qui induit beaucoup de gens en erreur. Tel que la liaison d'événement. Lorsque l'exécution de la fonction foo se termine, exécutez myfoo et ajoutez une surveillance pour foo sans modifier foo
.
var foo = function(){ //some code here }; jQuery.aop.after(foo,function(){ //added code here });
Jquery et prototype implémentent cette simple liaison de fonction. l'aop de jquery est ici. Mais dans yui3, AOP est promu au rang de mécanisme interne d'événements personnalisés, visible partout dans le code source. Ceci est utile pour comprendre le mécanisme de réutilisation du code de yui3. C'est précisément grâce à cette abstraction que les événements personnalisés de yui3 sont extrêmement puissants et flexibles. Par rapport à la POO, l'avantage de l'AOP est une « décoration » non intrusive, mais dans la plupart des cas, il n'est pas recommandé d'utiliser l'AOP pour écrire du code en premier. Regardons cet exemple : les habitudes de vie de chacun sont très similaires. Voici quatre comportements à titre d'exemple : aller à l'école, aller chercher des filles et jouer à des jeux. Le mode de vie de A est très normal. pareil. B est une personne gourmande. L'enfant qui joue ne va dans les cybercafés que pour jouer à des jeux et draguer les filles. C est un enfant qui aime étudier et ne drague jamais les filles. Ding est une alternative super forte. expérience. Il fait toujours deux choses en même temps quand il va à l'école, aller chercher des filles et jouer à des jeux après l'école. Ici, un div est utilisé pour représenter chaque personne, et onmouseover est utilisé pour déclencher chaque événement.
En utilisant la méthode POO, la structure du programme devrait être comme ceci :
Le code est ici : yui_oop.htm
Lorsque les « cinglés » ici héritent des « gens normaux », ils atteignent l'objectif de surcharge grâce à la réécriture de code, ce qui viole évidemment le principe de non-intrusivité. Regardons l'idée deAOP :
Le code est ici : yui_aop.htm
L'usine de libération d'événements est résumée ici, qui est utilisée pour gérer spécifiquement la libération des événements. Les objets de suivi de vie générés par celle-ci surveillent tout le monde et capturent les différents comportements de chacun. L'usine utilise la liaison d'écoute de la fonction mentionnée ci-dessus lors de la génération de la « piste de vie de la personne étrange ». Cette liaison est non invasive et peut être bien découplée de l'usine. En comparant la POO et l'AOP à partir de cet exemple, la complexité des deux est similaire, mais l'AOP a une idée plus large et le code est plus flexible.