A few Anti-patterns

Bloated & Lazy Classes

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.

Middleman & Feature Envy

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.

Mixed Layer Class

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.