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