레거시 코드베이스에서 나는 너무 많은 필드/책임을 가진 매우 큰 클래스를 가지고 있습니다. 이 피자 객체를 상상해보십시오.의사 역방향 작성기 패턴?
그것은 같은 고도로 세분화 된 분야가 있습니다
- hasPepperoni
- hasSausage
- hasBellPeppers
나는이 세 분야에 해당하는 경우, 우리는 최고 피자를 가지고 있음을 알 수있다. 그러나이 클래스는 확장 또는 변경을 위해 열려 있지 않으므로 PizzaType 또는 isSupreme() 등을 추가 할 수 없습니다. 코드베이스의 모든 사람들은 동일한 if(a && b && c) then isSupreme)
로직을 모든 곳에서 복제합니다. 이 문제는 꽤 많은 개념을 다루기 때문에이 객체를 여러 하위 객체로 분해하는 방법을 찾고 있습니다. pseudo-backwards 빌더 패턴.
PizzaType pizzaType = PizzaUnbuilder.buildPizzaType(Pizza); //PizzaType.SUPREME
Dough dough = PizzaUnbuilder.buildDough(Pizza);
이 방법이 맞습니까? 이 패턴이 이미 존재합니까?
만족스러운 답변을 얻었습니까? Avid? – Pureferret