The comment by ntl more or less nails it.<p>This example is contrived at best and intellectually dishonest at worst. These kinds of patterns simplify applications with complex business logic. They complicate applications with straightforward business logic - much in the same way having more equations than variables makes a system of linear equations overdetermined.<p>These patterns exist to help domains with complex use cases test the business logic - which is likely to be tricky and filled with edge cases - quickly and and in a distraction free layer apart from the rest of the supporting infrastructure (eg. models, views, and controllers). This narrows developer focus to a single level of abstraction so they can solve the hard problem at hand. These patterns then provide an integration path for reintroducing the rest of the infrastructure (eg. dependency injection, etc).