====== Enterprise Patterns ====== The first wave of patterns came in 1995 with the [[Gang of Four]]'s (Wikipedia Link: http://en.wikipedia.org/wiki/GoF) ground breaking [[http://www.amazon.com/exec/obidos/ASIN/0201633612/|Design Patterns]] publication. The patterns defined there are fundamental to modern programming paradigms, and turn up in many fields of software design. Many younger programming languages implement some patterns as part of the core libraries, for example the Iterators implemented in many languages or Java's [[http://java.sun.com/j2se/1.4.2/docs/api/java/util/Observable.html|Observable]] class. After a lull in pattern definition, the second wave took off with the evolution of the J2EE specification, resulting in the [[http://developer.java.sun.com/developer/technicalArticles/J2EE/patterns/|J2EE Patterns]] and the [[http://www.amazon.com/exec/obidos/ASIN/0130648841/|Core J2EE Patterns]] book. Next up was an excellent resource from Martin Fowler, [[book:Patterns of Enterprise Application Architecture]], which is highly recommended reading. Microsoft has also made a significant effort in defining patterns for .NET and for data handling, details found at the [[http://msdn.microsoft.com/architecture/patterns/MSpatterns/default.aspx|.NET Architecture Center]]. Between these three resources there's much room for inspiration in exploring possible PHP implementations. [[book:Patterns of Enterprise Application Architecture]] is the most impartial, examining both Java and .NET implementations. The J2EE and .NET resources focus more on application of the patterns within the respective frameworks. Two pinches of salt when translatating to PHP - literal ports may well result in non-optimal implementations - see [[PHP:Application Porting Concerns]]. Also (a cynic might say) both software vendors have an interest in pushing their products and capturing developer mindshare is a big part of that. What comes under the scope of enterprise patterns depends on what you mean by the term enterprise application.