« 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>
|