An interface defines a contract or a set of methods that a class must implement, without specifying how these methods should be implemented. It focuses on what operations can be performed, not how they are performed. In many programming languages, interfaces are explicitly defined using keywords like interface (e.g., in Java or TypeScript). In Ruby, interfaces are often represented by abstract classes or modules with method definitions that subclasses or including classes must implement.

Interface patterns: adapter, facade, mediator, gateway, separated interface