You can change the class-based behavior with Extract Class simply by plugging in different components.
You can also use only subclasses to represent one set of variations.
If you want the class to vary in several different ways, you have to use delegation for all but one of them.