A bloated class has too many responsibilities, a lazy class
doesn't have enough. Often a bloated class will have a type field and the
methods will have switch commands.

Move the responsibilities of the bloated class to
appropriate subclasses. Move the responsibilities of the lazy class to a
superclass.
A middleman class only delegates between its client and its
helper. Either it doesn't add any functionality or the client simply bypasses
its functionality.

Either prevent access to the helper or get rid of the
middleman.
A particularly evil type of bloated class contains
operations from different layers of the reusability hierarchy:

Divide the operations into different classes according to layer. Higher layers delegate to lower layers.