factory_method.py 903 B

12345678910111213141516171819202122232425262728293031
  1. #encoding=utf-8
  2. '''http://ginstrom.com/scribbles/2007/10/08/design-patterns-python-style/'''
  3. class GreekGetter:
  4. """A simple localizer a la gettext"""
  5. def __init__(self):
  6. self.trans = dict(dog="σκύλος", cat="γάτα")
  7. def get(self, msgid):
  8. """We'll punt if we don't have a translation"""
  9. try:
  10. return self.trans[msgid]
  11. except KeyError:
  12. return str(msgid)
  13. class EnglishGetter:
  14. """Simply echoes the msg ids"""
  15. def get(self, msgid):
  16. return str(msgid)
  17. def get_localizer(language="English"):
  18. """The factory method"""
  19. languages = dict(English=EnglishGetter, Greek=GreekGetter)
  20. return languages[language]()
  21. # Create our localizers
  22. e, g = get_localizer("English"), get_localizer("Greek")
  23. # Localize some text
  24. for msgid in "dog parrot cat bear".split():
  25. print(e.get(msgid), g.get(msgid))