Le motif factory
Définition
Ce motif permet la création d’objets par le biais d’une fabrique, qui elle même fera appel a des fabriques dites concrètes.
Principe
Découpler l’objet utilisateur de l’objet fabriquant rend le mode d’instanciation plus souple. On ne se soucie plus de la façon de créer un objet… Le motif fabrication utilise l’héritage
L’exemple par le code
Créons d’abord deux fabriques, l’une pour fabriquer un parser de texte au format Wiki et une autre pour fabriquer un parser de texte au format HTML.
module ParserFactory
attr_reader :type, :parser
end
class WikiFactory
include ParserFactory
def initialize
@type = "Wiki"
@parser = WikiParser.new
end
end
class HtmlFactory
include ParserFactory
def initialize
@type = "HTML"
@parser = HtmlParser.new
end
end
Ensuite nous allons mettre en place nos deux parseurs.
class Parser
def parse( source )
return nil
end
end
class WikiParser < Parser
def parse( source )
return "Je parse très bien le langage wiki"
end
end
class HtmlParser < Parser
def parse( source )
return "Je parse très bien le HTML"
end
end
Testons maintenant nos objets
wiki_factory = WikiFactory.new
print wiki_factory.type # -> Wiki
p wiki_factory.parser # -> #<WikiParser:0xb7d0fbc0>
print wiki_factory.parser.parse("source wiki") # -> Je parse très bien le langage wiki
print "\n"
html_factory = HtmlFactory.new
print html_factory.type # -> HTML
p html_factory.parser # -> #<HtmlParser:0xb7d0fb34>
print html_factory.parser.parse("source html") # -> >Exit code: 0


