One way to do this is have one interface with the three methods, and implement it in a few abstract classes (these would be the base classes for the full implementations). These abstract classes would only implement methods that are **not** needed and would implement them as no-ops (empty methods that do nothing, or return a `null`, for example). Your actual implementation classes would inherit from these abstract classes and only implement the needed subset of operations. --- Another option is to adhere to [ISP][1] (Interface Segregation Principle) and have a number of interfaces - one for each behaviour needed. [1]: http://en.wikipedia.org/wiki/Interface_segregation_principle