Я дам код на Python, но это не важно. У меня есть модуль argument_parser
со словарем и классом:
FORMATS = {
'JSON': 'json',
'XML': 'xml',
}
class ArgumentParser:
# some methods
def parse():
"""returns 'XML' or 'JSON' string"""
return fomat
и модуль с докладчиками - presenter
class JSONPresenter:
# some magic
class XMLPresenter:
# some magic
Проблема заключается во внедрении зависимости:
argument_parser = ArgumentParser()
format = argument_parser.parse()
if format == argument_parser.FORMATS['JSON']:
presenter = JSONFilePresenter()
elif format == argument_parser.FORMATS['XML']:
presenter = XMLFilePresenter()
if-elif
конструкция безобразна. Если я хочу добавить другие форматы, я должен добавить еще elif. Я мог бы определить тип докладчика в ArgumentParser
классе, но я думаю, что семантически это неправильно - это не сфера ответственности этого класса. Что я должен сделать, чтобы сделать это правильно?