31,026
edits
| Line 172: | Line 172: | ||
= Design patterns and Object programming = | = Design patterns and Object programming = | ||
== | == Creation design patterns (GoF) == | ||
Design patterns defined by the Gang Of Four (see wikipédia on [[wikipedia:Design pattern|Design patters]]). | |||
No usage of such patterns is required. We found some objects next to Singletons or Factory but not completely compliant with syntax, this is to be compatible with PHP 4 that is not a pure object language. | |||
[[wikipedia:Martin Fowler|Martin Fowler]] | == Structure design patterns (GoF) == | ||
* | Design patterns defined by the Gang Of Four (see wikipédia on [[wikipedia:Design pattern|Design patters]]). | ||
No usage of such patterns is required. | |||
* | == Behavior design patterns (GoF) == | ||
Design patterns defined by the Gang Of Four (see wikipédia on [[wikipedia:Design pattern|Design patters]]). | |||
No usage of such patterns is required. | |||
== Design patterns of enterprise (Martin Fowler) == | |||
=== Patterns of code organization === | |||
[[wikipedia:Martin Fowler|Martin Fowler]] has identified 3 way to organize: | |||
* The '''Transaction Script''' (The source code is linear for each user action). | |||
This is the old schoold used by all procedural languages. | |||
Inconvenient: Redundancy of code. Need to know the physical model of data to develop. | |||
* The '''Domain Model''' | |||
C'est un concept possible depuis les langages objets. Ce sont les procédures métiers (qui doivent être identifiés avant) qui servent de bases pour les classes objets. | C'est un concept possible depuis les langages objets. Ce sont les procédures métiers (qui doivent être identifiés avant) qui servent de bases pour les classes objets. | ||
Inconvénient: Motif complexe à maintenir. | Inconvénient: Motif complexe à maintenir. | ||
* | * The '''Table Module''' | ||
This is a mix between 2 previous where we have only one unique class for each table of database. | |||
Comme le montre les squelettes de code (voir point précédent), Dolibarr se base sur le principe du '''Table Module'''. | Comme le montre les squelettes de code (voir point précédent), Dolibarr se base sur le principe du '''Table Module'''. | ||
== Communication Logique métier - Données (ORM) == | === Communication Logique métier - Données (ORM) === | ||
Il existe 3 modes de liaisons: | Il existe 3 modes de liaisons: | ||