La fabrique abstraite est un patron de conception (design pattern) créationnel utilisé en génie logiciel orienté objet. Elle fournit une interface pour créer des familles d'objets liés ou inter-dépendants sans avoir à préciser au moment de leur création la classe concrète à utiliser.

Property Value
dbo:abstract
  • La fabrique abstraite est un patron de conception (design pattern) créationnel utilisé en génie logiciel orienté objet. Elle fournit une interface pour créer des familles d'objets liés ou inter-dépendants sans avoir à préciser au moment de leur création la classe concrète à utiliser. (fr)
  • La fabrique abstraite est un patron de conception (design pattern) créationnel utilisé en génie logiciel orienté objet. Elle fournit une interface pour créer des familles d'objets liés ou inter-dépendants sans avoir à préciser au moment de leur création la classe concrète à utiliser. (fr)
dbo:thumbnail
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 270417 (xsd:integer)
dbo:wikiPageLength
  • 18373 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID
  • 189155305 (xsd:integer)
dbo:wikiPageWikiLink
prop-fr:année
  • 2005 (xsd:integer)
prop-fr:auteurs
  • Eric Freeman, Elisabeth Freeman, Kathy Sierra et Bert Bates (fr)
  • Eric Freeman, Elisabeth Freeman, Kathy Sierra et Bert Bates (fr)
prop-fr:contenu
  • -- -- GUI Factory example; -- class GUI_FACTORY_FOR_CONFIG feature factory: GUI_FACTORY once inspect read_from_config_file when 0 then create {WIN_FACTORY} Result else create {OSX_FACTORY} Result end end end deferred class GUI_FACTORY feature create_button: BUTTON deferred end end class WIN_FACTORY inherit GUI_FACTORY feature create_button: WIN_BUTTON do create Result end end class OSX_FACTORY inherit GUI_FACTORY feature create_button: OSX_BUTTON do create Result end end deferred class BUTTON feature caption: STRING set_caption do caption := a_caption end paint deferred end end class WIN_BUTTON inherit BUTTON feature paint do print end end class OSX_BUTTON inherit BUTTON feature paint do print end end class APPLICATION inherit GUI_FACTORY_FOR_CONFIG create make feature make local button: BUTTON do button := factory.create_button button.set_caption button.paint end end (fr)
  • /* * GUIFactory example */ abstract class GUIFactory { public static GUIFactory getFactory { int sys = readFromConfigFile; if { return; } else { return; } } public abstract Button createButton; } class WinFactory:GUIFactory { public override Button createButton { return; } } class OSXFactory:GUIFactory { public override Button createButton { return; } } abstract class Button { public string caption; public abstract void paint; } class WinButton:Button { public override void paint { Console.WriteLine; } } class OSXButton:Button { public override void paint { Console.WriteLine; } } class Application { static void Main { GUIFactory aFactory = GUIFactory.getFactory; Button aButton = aFactory.createButton; aButton.caption = "Play"; aButton.paint; } //output is //I'm a WinButton: Play //or //I'm a OSXButton: Play } (fr)
  • /* * GUIFactory Example */ public abstract class GUIFactory { public static GUIFactory getFactory { int sys = readFromConfigFile; if return; return; } public abstract Button createButton; } class WinFactory extends GUIFactory { public Button createButton { return; } } class OSXFactory extends GUIFactory { public Button createButton { return; } } public abstract class Button { private String caption; public String getCaption { return caption; } public void setCaption { this.caption = caption; } public abstract void paint; } class WinButton extends Button { public void paint { System.out.println; } } class OSXButton extends Button { public void paint { System.out.println; } } public class Application { public static void main { GUIFactory aFactory = GUIFactory.getFactory; Button aButton = aFactory.createButton; aButton.setCaption; aButton.paint; } //output is //I'm a WinButton: Play //or //I'm a OSXButton: Play } (fr)
  • /* exemple d'une fabrique abstraite d'éléments d'IHM en C++ */ struct Button { virtual void paint = 0; }; class WinButton : public Button { void paint { std::cout << " I'm a window button \n"; } }; class OSXButton : public Button { void paint { std::cout << " I'm a OSX button \n"; } }; struct GUIFactory { virtual Button* createButton = 0; }; class WinGUIFactory : public GUIFactory { Button* createButton { return new WinButton; } }; class OSXGUIFactory : public GUIFactory { Button* createButton { return new OSXButton; } }; class Application { public: Application{ Button * button = factory->createButton; button->paint; delete button; } }; /* application : */ int main { GUIFactory* factory; #if defined factory = new WinGUIFactory; #elif defined factory = new OSXGUIFactory; #endif Application* app = new Application ; delete factory; delete app; return 0; } (fr)
  • #!/usr/bin/env python # -*- coding: utf-8 -*- #============================================================================== # Exemple d'une fabrique abstraite d’élément en Python #============================================================================== class RaceFactory: @staticmethod def get_factory: if race_type == 'automobile': return SpeedwayFactory elif race_type == 'hippique': return HippodromeFactory else: return StadiumFactory def create_racer: raise NotImplementedError class SpeedwayFactory: def create_racer: return Car class HippodromeFactory: def create_racer: return Horse class StadiumFactory: def create_racer: return Human class Racer: def __init__: self._nickname = None def start: raise NotImplementedError @property def nickname: return self._nickname @nickname.setter def nickname: self._nickname = nickname class Car: def start: return "Vroum vroum " % self.nickname class Horse: def start: return "HiIi hIiI, cataclop " % self.nickname class Human: def start: return "C'est parti ! " % self.nickname if __name__ == '__main__': import random t = random.choice a_factory = RaceFactory.get_factory a_racer = a_factory.create_racer a_racer.nickname = "Le Sans-Espoir" print # Affiche # "Vroum vroum " # ou # "HiIi hIiI, cataclop " # ou # "C'est parti ! " (fr)
  • /* * Fabrique abstraite */ abstract class GUIFactory { public static function getFactory { $sys = readFromConfigFile; if { return; } else { return; } } public abstract function createButton: Button; } class WinFactory extends GUIFactory { public function createButton: Button { return; } } class OSXFactory extends GUIFactory { public function createButton: Button { return; } } abstract class Button { private $_caption; public abstract function render; public function getCaption{ return $this->_caption; } public function setCaption{ $this->_caption = $caption; } } class WinButton extends Button { public function render { return "Je suis un WinButton: ".$this->getCaption; } } class OSXButton extends Button { public function render { return "Je suis un OSXButton: ".$this->getCaption; } } $aFactory = GUIFactory::getFactory; $aButton = $aFactory->createButton; $aButton->setCaption; echo $aButton->render; //Le rendu est //Je suis un WinButton: Démarrage //ou //Je suis un OSXButton: Démarrage (fr)
  • ' ' * GUIFactory example ' MustInherit Class GUIFactory Public Shared Function getFactory As GUIFactory Dim sys As Integer = readFromConfigFile If sys = 0 Then Return Else Return End If End Function Public MustOverride Function createButton As Button End Class Class WinFactory Inherits GUIFactory Public Overloads Overrides Function createButton As Button Return End Function End Class Class OSXFactory Inherits GUIFactory Public Overloads Overrides Function createButton As Button Return End Function End Class MustInherit Class Button Public caption As String Public MustOverride Sub paint End Class Class WinButton Inherits Button Public Overloads Overrides Sub paint Console.WriteLine End Sub End Class Class OSXButton Inherits Button Public Overloads Overrides Sub paint Console.WriteLine End Sub End Class Class Application Private Shared Sub Main Dim aFactory As GUIFactory = GUIFactory.getFactory Dim aButton As Button = aFactory.createButton aButton.caption = "Play" aButton.paint End Sub 'output is 'I'm a WinButton: Play 'or 'I'm a OSXButton: Play End Class (fr)
  • # GUIFactory example on Perl package GUIFactory; sub getFactory { shift; # skip class my $toolkit = shift; if { return; } else { return; } } package GtkFactory; use base 'GUIFactory'; sub new { bless; } sub createButton { return; } package TkFactory; use base 'GUIFactory'; sub new { bless; } sub createButton { return; } package Button; sub new { $class = shift; my $self = {}; $self{caption} = ''; bless; return $self; } package GtkButton; use base 'Button'; sub paint { print "I'm a GtkButton\n"; } package TkButton; use base 'Button'; sub paint { print "I'm a TkButton\n"; } package main; my $aFactory = GUIFactory->getFactory; my $aButton = $aFactory->createButton; $aButton->{caption} = "Play"; $aButton->paint; (fr)
  • -- -- GUI Factory example; -- class GUI_FACTORY_FOR_CONFIG feature factory: GUI_FACTORY once inspect read_from_config_file when 0 then create {WIN_FACTORY} Result else create {OSX_FACTORY} Result end end end deferred class GUI_FACTORY feature create_button: BUTTON deferred end end class WIN_FACTORY inherit GUI_FACTORY feature create_button: WIN_BUTTON do create Result end end class OSX_FACTORY inherit GUI_FACTORY feature create_button: OSX_BUTTON do create Result end end deferred class BUTTON feature caption: STRING set_caption do caption := a_caption end paint deferred end end class WIN_BUTTON inherit BUTTON feature paint do print end end class OSX_BUTTON inherit BUTTON feature paint do print end end class APPLICATION inherit GUI_FACTORY_FOR_CONFIG create make feature make local button: BUTTON do button := factory.create_button button.set_caption button.paint end end (fr)
  • /* * GUIFactory example */ abstract class GUIFactory { public static GUIFactory getFactory { int sys = readFromConfigFile; if { return; } else { return; } } public abstract Button createButton; } class WinFactory:GUIFactory { public override Button createButton { return; } } class OSXFactory:GUIFactory { public override Button createButton { return; } } abstract class Button { public string caption; public abstract void paint; } class WinButton:Button { public override void paint { Console.WriteLine; } } class OSXButton:Button { public override void paint { Console.WriteLine; } } class Application { static void Main { GUIFactory aFactory = GUIFactory.getFactory; Button aButton = aFactory.createButton; aButton.caption = "Play"; aButton.paint; } //output is //I'm a WinButton: Play //or //I'm a OSXButton: Play } (fr)
  • /* * GUIFactory Example */ public abstract class GUIFactory { public static GUIFactory getFactory { int sys = readFromConfigFile; if return; return; } public abstract Button createButton; } class WinFactory extends GUIFactory { public Button createButton { return; } } class OSXFactory extends GUIFactory { public Button createButton { return; } } public abstract class Button { private String caption; public String getCaption { return caption; } public void setCaption { this.caption = caption; } public abstract void paint; } class WinButton extends Button { public void paint { System.out.println; } } class OSXButton extends Button { public void paint { System.out.println; } } public class Application { public static void main { GUIFactory aFactory = GUIFactory.getFactory; Button aButton = aFactory.createButton; aButton.setCaption; aButton.paint; } //output is //I'm a WinButton: Play //or //I'm a OSXButton: Play } (fr)
  • /* exemple d'une fabrique abstraite d'éléments d'IHM en C++ */ struct Button { virtual void paint = 0; }; class WinButton : public Button { void paint { std::cout << " I'm a window button \n"; } }; class OSXButton : public Button { void paint { std::cout << " I'm a OSX button \n"; } }; struct GUIFactory { virtual Button* createButton = 0; }; class WinGUIFactory : public GUIFactory { Button* createButton { return new WinButton; } }; class OSXGUIFactory : public GUIFactory { Button* createButton { return new OSXButton; } }; class Application { public: Application{ Button * button = factory->createButton; button->paint; delete button; } }; /* application : */ int main { GUIFactory* factory; #if defined factory = new WinGUIFactory; #elif defined factory = new OSXGUIFactory; #endif Application* app = new Application ; delete factory; delete app; return 0; } (fr)
  • #!/usr/bin/env python # -*- coding: utf-8 -*- #============================================================================== # Exemple d'une fabrique abstraite d’élément en Python #============================================================================== class RaceFactory: @staticmethod def get_factory: if race_type == 'automobile': return SpeedwayFactory elif race_type == 'hippique': return HippodromeFactory else: return StadiumFactory def create_racer: raise NotImplementedError class SpeedwayFactory: def create_racer: return Car class HippodromeFactory: def create_racer: return Horse class StadiumFactory: def create_racer: return Human class Racer: def __init__: self._nickname = None def start: raise NotImplementedError @property def nickname: return self._nickname @nickname.setter def nickname: self._nickname = nickname class Car: def start: return "Vroum vroum " % self.nickname class Horse: def start: return "HiIi hIiI, cataclop " % self.nickname class Human: def start: return "C'est parti ! " % self.nickname if __name__ == '__main__': import random t = random.choice a_factory = RaceFactory.get_factory a_racer = a_factory.create_racer a_racer.nickname = "Le Sans-Espoir" print # Affiche # "Vroum vroum " # ou # "HiIi hIiI, cataclop " # ou # "C'est parti ! " (fr)
  • /* * Fabrique abstraite */ abstract class GUIFactory { public static function getFactory { $sys = readFromConfigFile; if { return; } else { return; } } public abstract function createButton: Button; } class WinFactory extends GUIFactory { public function createButton: Button { return; } } class OSXFactory extends GUIFactory { public function createButton: Button { return; } } abstract class Button { private $_caption; public abstract function render; public function getCaption{ return $this->_caption; } public function setCaption{ $this->_caption = $caption; } } class WinButton extends Button { public function render { return "Je suis un WinButton: ".$this->getCaption; } } class OSXButton extends Button { public function render { return "Je suis un OSXButton: ".$this->getCaption; } } $aFactory = GUIFactory::getFactory; $aButton = $aFactory->createButton; $aButton->setCaption; echo $aButton->render; //Le rendu est //Je suis un WinButton: Démarrage //ou //Je suis un OSXButton: Démarrage (fr)
  • ' ' * GUIFactory example ' MustInherit Class GUIFactory Public Shared Function getFactory As GUIFactory Dim sys As Integer = readFromConfigFile If sys = 0 Then Return Else Return End If End Function Public MustOverride Function createButton As Button End Class Class WinFactory Inherits GUIFactory Public Overloads Overrides Function createButton As Button Return End Function End Class Class OSXFactory Inherits GUIFactory Public Overloads Overrides Function createButton As Button Return End Function End Class MustInherit Class Button Public caption As String Public MustOverride Sub paint End Class Class WinButton Inherits Button Public Overloads Overrides Sub paint Console.WriteLine End Sub End Class Class OSXButton Inherits Button Public Overloads Overrides Sub paint Console.WriteLine End Sub End Class Class Application Private Shared Sub Main Dim aFactory As GUIFactory = GUIFactory.getFactory Dim aButton As Button = aFactory.createButton aButton.caption = "Play" aButton.paint End Sub 'output is 'I'm a WinButton: Play 'or 'I'm a OSXButton: Play End Class (fr)
  • # GUIFactory example on Perl package GUIFactory; sub getFactory { shift; # skip class my $toolkit = shift; if { return; } else { return; } } package GtkFactory; use base 'GUIFactory'; sub new { bless; } sub createButton { return; } package TkFactory; use base 'GUIFactory'; sub new { bless; } sub createButton { return; } package Button; sub new { $class = shift; my $self = {}; $self{caption} = ''; bless; return $self; } package GtkButton; use base 'Button'; sub paint { print "I'm a GtkButton\n"; } package TkButton; use base 'Button'; sub paint { print "I'm a TkButton\n"; } package main; my $aFactory = GUIFactory->getFactory; my $aButton = $aFactory->createButton; $aButton->{caption} = "Play"; $aButton->paint; (fr)
prop-fr:isbn
  • 978 (xsd:integer)
prop-fr:langue
  • fr (fr)
  • fr (fr)
prop-fr:pagesTotales
  • 639 (xsd:integer)
prop-fr:titre
  • exemple d'une fabrique abstraite d'éléments d'IHM en Python (fr)
  • Design patterns, tête la première (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en Perl (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en C++ (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en C# (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en VB.Net (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en Eiffel (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en Java (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en PHP (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en Python (fr)
  • Design patterns, tête la première (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en Perl (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en C++ (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en C# (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en VB.Net (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en Eiffel (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en Java (fr)
  • exemple d'une fabrique abstraite d'éléments d'IHM en PHP (fr)
prop-fr:wikiPageUsesTemplate
dct:subject
rdfs:comment
  • La fabrique abstraite est un patron de conception (design pattern) créationnel utilisé en génie logiciel orienté objet. Elle fournit une interface pour créer des familles d'objets liés ou inter-dépendants sans avoir à préciser au moment de leur création la classe concrète à utiliser. (fr)
  • La fabrique abstraite est un patron de conception (design pattern) créationnel utilisé en génie logiciel orienté objet. Elle fournit une interface pour créer des familles d'objets liés ou inter-dépendants sans avoir à préciser au moment de leur création la classe concrète à utiliser. (fr)
rdfs:label
  • Abstract Factory パターン (ja)
  • Abstract factory (ca)
  • Abstract factory (it)
  • Abstract factory pattern (en)
  • Abstrakte Fabrik (de)
  • Fabrique abstraite (fr)
  • Fabryka abstrakcyjna (pl)
  • Абстрактна фабрика (uk)
  • 抽象工厂 (zh)
rdfs:seeAlso
owl:sameAs
prov:wasDerivedFrom
foaf:depiction
foaf:isPrimaryTopicOf
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is oa:hasTarget of
is foaf:primaryTopic of