Two-wire adapters are adapters that implement both the Target and Adaptee interfaces. The adapted object can be used as a Target in new systems related to target classes, or as an Adaptee in other systems related to Adaptee classes. Continuing this line of thinking, we can have adapters that implement n interfaces that adapt to n systems. Two-way adapters and n-shaped adapters are difficult to implement on systems that do not support multiple inheritance. If an adapter needs to extend the Target class, it cannot extend another class, such as an Adaptee, so the Adaptee must be an interface, and all calls must be delegated from the adapter to the Adaptee.
Source: http://www.oodesign.com/adapter-pattern.html
source share