Join Point Models
The advice-related component of an aspect-oriented language defines a join point model (JPM). A JPM defines three things:
- When the advice can run. These are called join points because they are points in a running program where additional behavior can be usefully joined. A join point needs to be addressable and understandable by an ordinary programmer to be useful. It should also be stable across inconsequential program changes in order for an aspect to be stable across such changes. Many AOP implementations support method executions and field references as join points.
- A way to specify (or quantify) join points, called pointcuts. Pointcuts determine whether a given join point matches. Most useful pointcut languages use a syntax like the base language (for example, AspectJ uses Java signatures) and allow reuse through naming and combination.
- A means of specifying code to run at a join point. AspectJ calls this advice, and can run it before, after, and around join points. Some implementations also support things like defining a method in an aspect on another class.
Join-point models can be compared based on the join points exposed, how join points are specified, the operations permitted at the join points, and the structural enhancements that can be expressed.
Read more about this topic: Aspect-oriented Programming
Famous quotes containing the words join, point and/or models:
“This, then, is the test we must set for ourselves; not to march alone but to march in such a way that others will wish to join us.”
—Hubert H. Humphrey (19111978)
“I laugh when I think that all of Rome made it a point not to pronounce Drusillas name. Because Rome was mistaken for all those years. Love is not enough for me, and I understood that then.... To love someone is to accept to grow old with her. An old Drusilla is far worse than a dead one.”
—Albert Camus (19131960)
“Today it is not the classroom nor the classics which are the repositories of models of eloquence, but the ad agencies.”
—Marshall McLuhan (19111980)