A class isn't doing much ”its parents, children, or callers seem to be doing all the associated work, and there isn't enough behavior left in the class to justify its continued existence.
Causes
Typically, all the class's responsibilities have been moved to other places in the course of refactoring.
What to Do
If parents or children of the class seem like the right place for the class's behavior, fold it into one of them via Collapse Hierarchy .
Otherwise, fold its behavior into its caller via Inline Class .
Sometimes a lazy class is present to communicate intent. You may have to balance communication versus simplicity.
Exercise 33 Swing Libraries. (Challenging).
The Swing Libraries have a pattern:
The AbstractXModel is the only implementation of the interface, and the DefaultXModel is the only subclass of the AbstractXModel. (Typically the abstract model has the notification handling built in, but it may support other things.)
What advantages are there in having the model be an interface, separate from the AbstractXModel class?
Why is this not an example of a Lazy Class?
Should you adopt this three-class structure for your object structure?