Abstraction inversion

In computer programming, abstraction inversion is an anti-pattern arising when users of a construct need functions implemented within it but not exposed by its interface.

The result is that the users re-implement the required functions in terms of the interface, which in its turn uses the internal implementation of the same functions.

This may result in implementing lower-level features in terms of higher-level ones, thus the term 'abstraction inversion'.

Possible ill-effects are: Alleged examples from professional programming circles include: Examples that are common outside professional programming circles include: