Design pattern en AS3 #4 Abstract Factory

Dans le dernier article portant sur les design patterns en ActionScript3, nous avons abordé la factory. Aujourd’hui voyons l’Abstract factory (fabrique abstraite).

Elle encapsule un groupe de factory ayant une thématique commune. Le code crée alors une implémentation concrète de la fabrique abstraite, puis utilise les interfaces génériques pour créer des objets concrets de la thématique. Le client ne se préoccupe pas de savoir laquelle de ces fabriques a donné un objet concret, car il n’utilise que les interfaces génériques des objets produits. Ce patron de conception sépare les détails d’implémentation d’un ensemble d’objets de leur usage générique. Exemple de mise en œuvre :

private var _contenu0:IContenu;

private var _contenu1:IContenu;

private var _contenu2:IContenu;



public function creator(content:Object)

{

/*             ABSTRACT FACTORY             factory utilise d'autres factory , cache les classes fabricant l'objet             */

        

            _contenu1 = FactoryContent.prebuild(content);

            _contenu2 = FactoryContent.prebuild(_content);

           

}

  Le contenu de la classe FactoryContent sera alors :  

public class FactoryContent

{

            public function FactoryContent()

            {

            }

           

            public static function prebuild(content:Object):IContenu

            {

                        var resultatContenu:IContenu;

                       

                        resultatContenu = BContenu.prebuildContent(content);

                       

                        return resultatContenu;

            }

           

}

Mais on peut toujours construire des contenus “from scratch” sans factory :  

_contenu0 = BContenu.prebuildContent(_content);

_contenu1 = BContenu.prebuildContent(_content);

_contenu2 = BContenu.prebuildContent(_content]);

public static function prebuildContent(content:Object):IContenu

{

            var resultatContenu:IContenu;

            resultatContenu = new BContenu(content);

           

            return resultatContenu;

}

Auteur : Eric Duport, Ingénieur Concepteur Développeur à SQLI Lyon