Function encapsulated as class. Dependencies passed via constructor. Single public method to execute 'function'.
Di as a single class with cake pattern using lazy properties for defining injectable objects. The most important - main function as application entry point.