Interfaces is an actively used design pattern. Aka Protocol pattern.

?Years Old

Languages with Interfaces include graphql, java, kotlin, objective-c, swift, typescript

Example from graphql:

interface Character {
 id: ID!
 name: String!
 friends: [Character]
 appearsIn: [Episode]!
}
type Human implements Character {
  id: ID!
  name: String!
  friends: [Character]
  appearsIn: [Episode]!
  starships: [Starship]
  totalCredits: Int
}
type Droid implements Character {
  id: ID!
  name: String!
  friends: [Character]
  appearsIn: [Episode]!
  primaryFunction: String
}

Example from java:

interface MyInterface{  
   /* This is a default method so we need not
    * to implement this method in the implementation 
    * classes  
    */
   default void newMethod(){  
       System.out.println("Newly added default method");  
   }  
   /* Already existing public and abstract method
    * We must need to implement this method in 
    * implementation classes.
    */
   void existingMethod(String str);  
}  
public class Example implements MyInterface{ 
  // implementing abstract method
    public void existingMethod(String str){           
        System.out.println("String is: "+str);  
    }  
    public static void main(String[] args) {  
      Example obj = new Example();
      
      //calling the default method of interface
        obj.newMethod();     
        //calling the abstract method of interface
        obj.existingMethod("Java 8 is easy to learn"); 
  
    }  
}

Example from kotlin:

interface Named {
   val name: String
}
interface Person : Named {
    val firstName: String
    val lastName: String
    
    override val name: String get() = "$firstName $lastName"
}

Example from objective-c:

@protocol Printing
   -(void) print;
@end

Example from swift:

protocol MyProtocol {
init(parameter: Int)
var myVariable: Int { get set }
var myReadOnlyProperty: Int { get }
func myMethod()
func myMethodWithBody()
}
extension MyProtocol {
func myMethodWithBody() {
  // implementation goes here
  }
}

Example from typescript:

// https://www.typescriptlang.org/docs/handbook/interfaces.html
interface SquareConfig {
   color?: string;
   width?: number;
}

Last updated June 22nd, 2020

Edit Interfaces on GitHub