некоторое (добавляемое) количество налогов (Tax). Проблема в том, что этих налогов может добавляться очень много и, в связи с этим, было решено по контейнеру передавать в конструкт "сборщика" налогов iterable массив, куда будут инджектиться разные виды налогов, которые, в свою очередь, реализуют Интерфейс TaxInterface, который обязывает каждый налог обладать методом подсчета на основе определенных данных (они не одинаковы для каждого налога) (некоторые налоги должны знать о других, уже расчитанных налогах. То есть входные параметры для метода вычисления налогов совершенно разные). И вот тут загвоздка, как такое можно реализовать, учитывая, что все эти подсчеты происходят в ходе дейсвтия iterable массива?
Сейчас на ум лишь приходит переподсчет каждого налога внутри другого (иджектиться определенный нужный класс налога внутрь другого и там уже происходит рассчет), но в этом случае сама математика будет происходить дважды. Сначала для расчета первого налога, а потом при подсчете второго, что, как мне кажется, абсолютно неверно.
Как такое можно провернуть?
В какой нибудь TaxCalculator вынести общую логику, а может и в несколько, если ее там много
Ну, это однозначно
И что значит в ходе действия массива
Ну, получается так, в условный TaxCalculator прокидываются все возможные налоги в виде массива с объектами. По выполнению весь массив обходится. Но так как, у нас NestedTax требует себе итог SimpleTax и $weather. То мы ему в ходе итерации массива с объепктами должны выдать нужные атрибуты. Типа как инстанс оф, только изящнее
Код примерно покажи, может кто подскажет чего
Я пока еще на концепте, сейчас начну писать
У тебя SimpleTax сама считается, а потом еще внутри NestedTax, в этом ты видишь проблему?
Обсуждают сегодня