April 2014
Beginner to intermediate
634 pages
15h 22m
English
A software design often has aspects that apply across several classes, functions, or methods. We might have a technical aspect, examples include logging, auditing, or security, that must be implemented consistently. The general method for reuse of functionality in object-oriented programming is inheritance through a class hierarchy. However, inheritance doesn't always work out well. Some aspects of a software design are orthogonal to the class hierarchy. These are sometimes called "cross-cutting concerns". They cut across the classes, making design more complex.
A decorator provides a way to define functionality that's not bound to the inheritance hierarchy. We can use decorators to design ...