Aspects seem to be easily categorized as system or enterprise-wide concerns because those contexts gain the most visible benefits from aspect-oriented methods. However, any cross-cutting behavior is a good candidate for implementation using AspectJ whether that behavior is across the enterprise, system, or a single class or component. The next three chapters will look at the different types of aspects that can be applied within these three different software development contexts: enterprise, system, and component. This chapter focuses on micro-scale aspects that are apparent in class or component-wide cross-cutting concerns. You'd be forgiven for thinking that little could be described as cross-cutting within a single class or component. Take a closer look though and you'll discover that any behavior that affects the characteristics of a class can be a strong candidate for an aspect, especially if those characteristics are not core to the business logic of the class. Examples of these micro-scale cross-cutting concerns examined in this chapter range from validating the parameters passed to a method, to controlling the instantiation of a class. These areas benefit from modularization and separation from the core business concerns of a class and show how using AspectJ can improve your design and implementation, even at the class and component level. |