This document discusses removing dependency on concrete classes by using interfaces and patterns like abstract factory and strategy. It recommends using interfaces instead of extending concrete classes. Abstract factory creates objects through factory methods while encapsulating object creation. Singleton and abstract factory patterns are described as ways to remove extends. Strategy pattern is presented as an alternative to dependency on concrete classes.