So, what are the pros and cons of layering?
An advantage to layers is that substitution is possible. This means that you can pull out a layer and provide a different layer that adheres to the interface but provides a completely different level of functionality. This is very helpful for unit tests; it is also helpful for applications that may require different business logic or database access but no other changes. A disadvantage of layers is that cascading interface changes may lead to more work. Adding a field to a screen or page may require a change not only in the layers of the presentation tier, but it may also require a change in the business and data tiers.