This is sample application for showing how can we design software architecture from point of view of dependency.
This is initial application code. It has several problems and we are going to fix these problems with refactoring.
The first problem is that domain packages have cyclic dependency. We are going to fix this problem by creating abstract class based on 'Dependency Inversion Principle'