GoF [Gang Of Four] design patterns used:
  • Singleton
    For forcing only one instance of Doctrine_Manager
  • Composite
    For leveled configuration
  • Factory
    For connection driver loading and many other things
  • Observer
    For event listening
  • Flyweight
    For efficient usage of validators
  • Iterator
    For iterating through components [Tables, Connections, Records etc.]
  • State
    For state-wise connections
  • Strategy
    For algorithm strategies

    Enterprise application design patterns used:
  • Active Record
    Doctrine is an implementation of this pattern
  • UnitOfWork
    For maintaining a list of objects affected in a transaction
  • Identity Field
    For maintaining the identity between record and database row
  • Metadata Mapping
    For Doctrine DataDict
  • Dependent Mapping
    For mapping in general, since all records extend Doctrine_Record which performs all mappings
  • Foreign Key Mapping
    For one-to-one, one-to-many and many-to-one relationships
  • Association Table Mapping
    For association table mapping (most commonly many-to-many relationships)
  • Lazy Load
    For lazy loading of objects and object properties
  • Query Object
    DQL API is actually an extension to the basic idea of Query Object pattern