I'm trying to understand how these two concepts could work together
architecturally (if they can.) I realize both concepts provide benefits
of re-use and ease of maintenance. Which is important when you are
setting up multiple sites that are similar.
But it seems like using both Design Patterns and Layered Architecture
together would create conflicts -- especially in the area of keeping
layers loosely coupled (and even physically on separate server tiers
and possibly with Web Services APIs for each Layer on a service buss)
while still implementing system-wide patterns of design.
For example, consider an ecommerce system that has a Presentation Layer
(on the Web App tier), Business Logic (on the Middlewear tier), and a
Data Access Object layer (on the Database tier).
Along comes a PHP programmer with a JAVA background who believes in the
benefits of using Model-View-Controller (MVC) design patterns.
It seems like constructing "data objects" for creating the "Data Model"
are going to require closer coupling of Business Logic and Data Access
Layers.
It seems like constructing "view objects" for various role-based
interfaces and data states, and subsets of data (like date ranges,
etc.) may require closer coupling of the Presentation Layer and
Business Logic.
It seems like setting up "broadcaster objects" and "listener objects"
for Controller events system-wide could require closer coupling of all
three layers.
Any opinions on how this seems at cross-purposes?
Thanks,
--Dave