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