Modèles de Conception de Construction

Ils définissent comment faire l'instanciation et la configuration des classes et des objets.

Fabrique

Fabrique (Factory Method) : Elle permet d'instancier des objets dont le type est dérivé d'un type abstrait. La classe exacte de l'objet n'est donc pas connue par l'appelant.

Les fabriques étant en général uniques dans un programme, on utilise souvent le patron de conception singleton pour les implémenter.

<code>
FabriqueArticles
+creerArticle():void
+detruireArticle(a:Article):void
Article
+Recycler():void
* + articlesDisponibles
</code>

De son côté, la fabrique gère une collection d'Articles disponibles (c'est-à-dire existant en mémoire mais qui ne sont plus utilisés par personne). Lorsqu'une classe cliente lui demande de créer un nouvel Article:

* Si elle dispose d'Articles disponibles, elle en prend un, le recycle et le renvoie à l'appelant.
* Dans le cas contraire, elle peut prendre la décision d'instancier un nouvel Article, mais comme il est probable qu'on lui demande d'en créer encore un nouveau très peu de temps après, elle peut très bien prendre l'initiative d'instancier plusieurs Articles d'un coup. Ainsi elle se constitue un stock et répondra plus rapidement aux demandes suivantes.

Cette technique, appelée le Pool d'objets, suppose toutefois une chose: chaque Article doit savoir se recycler, c'est-à-dire se réinitialiser dans le même état que s'il venait d'être instancié. Ainsi les utilisateurs ne voient aucune différence entre un nouvel Article et un Article recyclé. D'aucuns diront que le principe d'inversion des dépendances n'est pas respecté à la lettre puisqu'un objet métier "s'abaisse à des considérations techniques"... 

Fabrique abstraite

  • Fabrique abstraite (Abstract Factory) : Encapsulation de fabriques individuelles qui ont une interface commune sans implémentation concrète.

  • Plusieurs fabriques peuvent être regroupées en une fabrique abstraite permettant d'instancier des objets dérivant de plusieurs types abstraits différents.

Monteur

Monteur (Builder) : utilisé pour la création d'une variété d'objets complexes à partir d'un objet source. L'objet source peut consister en une variété de parties contribuant individuellement à la création de chaque objet complet grâce à un ensemble d'appels à l'interface commune de la classe abstraite Monteur. Son but est de séparer la construction d'un objet complexe de la représentation afin que le même processus de construction puisse créer différentes représentations.

/* Monteur */

abstract class MonteurPizza {

protected Pizza pizza;

public Pizza getPizza() { return pizza; }

public void creerNouvellePizza() { pizza = new Pizza(); }


public abstract void monterPate();

public abstract void monterSauce();

public abstract void monterGarniture();

}

  • Prototype (Prototype)

Singleton 

Singleton (Singleton) : restreindre l'instanciation d'une classe à un seul objet. Il est utilisé lorsqu'on a besoin exactement d'un objet pour coordonner des opérations dans un système.

```console
GestionDesPublications
-instance:GestionDesPublications
+GetInstance():GestionDesPublications
+AjouterTheme(theme:string):void
+PublierArticle(theme:string,titre:string,auteur:string,text:string,urlContenu:string):void
+PublierNews(theme:string,titre:string,auteur:string,text:string):void
<< create >>-GestionDesPublications():
```


Commentaires

Posts les plus consultés de ce blog

Sécurité des Applications

Principes de la Programmation Orientée Objet

Principe de Responsabilité Unique