Conversation
Only in Obj-C. Still has (smaller) cost, though: if a class uses a bag-of-functions singleton, it's hard-coupled to those impls. Of course (as always), the alternatives (e.g. dependency injection) have cost profiles too. All is trade-offs… In examining interaction graphs, though, depth is important. e.g. is the controller responsible for orchestrating interactions? Similarly in a dataflow network: who knows the topology? Each piece knows next receiver? Centralized orchestrator?