> For the complete documentation index, see [llms.txt](https://hanfak.gitbook.io/workspace/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hanfak.gitbook.io/workspace/general-paradigms/principles/existing-interface.md).

# Reuse existing interfaces

* Instead of creating a new interface, reuse one that already exists
  * especially those that are part of the language or common libraries

## Benefits

* Reduce bloat
  * Having too many interfaces can make the code too hard to follow
* Reduce cognitive load
  * Existing interfaces mean the devs are already comfortable with them

## Negatives

* Interface is a contract for a specific usage, although abstract it might not be abstract enough for use in multiple places
  * Just because an interface is available, and can be used, does not mean it should be used, think about what the interface is for
*

## Example

* Strategy Pattern
  * Instead of new interface, use a Function\<INPUT,OUTPUT> or Consumer
    * Can have another interface but that extends theses
  * The implementors will just implement this interface, and override this method
  * These interfaces are single method interfaces, and thus lambdas/method ref can be used
