Changes

m
Line 172: Line 172:  
= Design patterns and Object programming =
 
= Design patterns and Object programming =
   −
== Motifs d'organisation du code: ==
+
== 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]] a identifié 3 méthodes d'organisation du code appelées '''motifs''':
+
== Structure design patterns (GoF) ==
* Le '''Transaction Script''' (Le code est linéraire en fonction d'une action utilisateur).
+
Design patterns defined by the Gang Of Four (see wikipédia on [[wikipedia:Design pattern|Design patters]]).
C'est le motif à l'ancienne utilisé dans les langages procéduraux.
+
No usage of such patterns is required.
Inconvénient: Redondance du code. Nécessité de connaitre le modèle physique pour développer.
+
 
* Le '''Domain Model'''
+
== 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.
* Le '''Table Module'''
+
* The '''Table Module'''
Un intermédiaire entre les 2 précédents où l'on a une instance unique de classe par table de la base de données.
+
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: