« Patrons de conception/Fabrique abstraite » : différence entre les versions

Contenu supprimé Contenu ajouté
portail + catégories
Aucun résumé des modifications
Ligne 326 :
//or
//I'm a OSXButton: Play
</source>
 
=== [[Eiffel (langage)|Eiffel]] ===
 
<source lang="eiffel">
--
-- GUI Factory example
--
class GUI_FACTORY_FOR_CONFIG feature
get_factory: GUI_FACTORY is
once
inspect read_from_config_file("OS_TYPE")
when 0 then
create {WIN_FACTORY} Result
else
create {OSX_FACTORY} Result
end
end
end
 
deferred class GUI_FACTORY feature
create_button: BUTTON is deferred end
end
 
class WIN_FACTORY inherit GUI_FACTORY feature
create_button: WIN_BUTTON is do create Result end
end
 
class OSX_FACTORY inherit GUI_FACTORY feature
create_button: OSX_BUTTON is do create Result end
end
 
deferred class BUTTON feature
caption: STRING
set_caption(value: like caption) is do caption := value end
paint is deferred end
end
 
class WIN_BUTTON inherit BUTTON feature
paint is do print("I'm a WIN_BUTTON: "+caption+"%N") end
end
class OSX_BUTTON inherit BUTTON feature
paint is do print("I'm a OSX_BUTTON: "+caption+"%N") end
end
class APPLICATION inherit GUI_FACTORY_FOR_CONFIG creation main feature
main is local button : BUTTON do
button := get_factory.create_button
button.set_caption("Play")
button.paint
end
end
</source>