A method call is a very specific type of interaction between caller and implementer.
- Synchronous—The caller dictates the timing of the request, whereas the implementer is expected to immediately compute a response.
- Arguments-Return Value—The caller can pass many values to the implementer, but the implementer can only pass one value back.
- Identification—The caller must know the identity of the implementer, but the implementer does not know the identity of the caller.
There are many widely used features which adjust the caller-implementer dynamic.
- Async & Futures—The caller may make the request in its own time; the implementer makes the response in its own time.
- Destructuring & Tuples—The implementer can return many values in addition to accepting many arguments.
- Eventing—The implementer must know the identity of the caller, but the caller does not know the identity of the implementer.