In one design patterns class, I had an interesting discussion about modelling domain logic. Specifically, it was about isolating the domain logic. An application would typically be divided into three parts: Presentation (e.g. desktop GUI, browser, web service) Domain logic Infrastructure (e.g. persistence storage, e-mail) The class found it interesting that the dependency arrows were ...