раз)
Есть несколько условных юнитов, нужно реализовать ассоциацию этих юнитов с их alias с возможностьб получения как списка всех юнитов, так и получения отдельного юнита по его alias.
Паттерн ServiceLocator - анти паттерн, что можно использовать в таком случае?
В книгах пишут, инжектируйте правильно.
Но в таком случае что и куда нужно инжектировать, чтобы было верно?
# units.py
class BaseUnit:
alias: "some-key-base"
def __init__(self, context):
self.context = context
def func(self):
pass
class Unit1(BaseUnit):
alias: "some-key"
pass
class Unit2(BaseUnit):
alias: "some-key-2"
pass
# main.py
unit_class: BaseUnit= UnitLocator("some-key") # ?
unit = unit_class({"context": "example"})
Верно ли будет инжектировать UnitLocator в Unit.__init__ и хранить в UnitLocator'е не сами классы, а готовые экземпляры? В таком случае все юниты нужно будет создать где-то, и возможно сетить контекст в рантайме. Но сетить контекст в рантайме тоже глупо, ибо экземпляр создается в таком случае с недостаточными для его работы данными.
Обсуждают сегодня