В устаревшей кодовой базе у меня очень большой класс с слишком большим количеством полей/обязанностей. Представьте, что это объект Pizza.Pseudo-Backward Builder Pattern?
Он имеет весьма гранулированных поля, как:
- hasPepperoni
- hasSausage
- hasBellPeppers
Я знаю, что, когда эти три поля являются истинными, мы имеем Supreme пиццу. Тем не менее, этот класс не открыт для расширения или изменения, поэтому я не могу добавить PizzaType или isSupreme() и т. Д. Люди на всей кодовой базе дублируют одну и ту же логику if(a && b && c) then isSupreme)
по всему месту. Эта проблема возникает из нескольких понятий, поэтому я ищу способ деконструировать этот объект во многих подобъектах, например. псевдо-обратный шаблон строителя.
PizzaType pizzaType = PizzaUnbuilder.buildPizzaType(Pizza); //PizzaType.SUPREME
Dough dough = PizzaUnbuilder.buildDough(Pizza);
Это правильный подход? Этот шаблон уже существует?
Вы когда-нибудь получали удовлетворительный ответ, Avid? – Pureferret