🎉 Hooray! After 3 years of work, I've finally released the ebook on design patterns! Check it out »

Dealing with Generalization

Abstraction has its own group of refactoring techniques, primarily associated with moving functionality along the class inheritance hierarchy, creating new classes and interfaces, and replacing inheritance with delegation and vice versa.