1. Parameter interfaces: data is passed from one method to another
  2. Procedural interfaces: set of procedures encapsulates a subsystem and other components interact with the subsystem through these procedures
  3. Shared memory interfaces: block of memory is shared between two distinct processes
  4. Message passing interfaces: one subsystem is designed to respond to requests made by other subsystems