package com.blogspot.toomuchcoding.book.chapter8._3_ClassCast; import java.util.List; import com.blogspot.toomuchcoding.book.chapter8.common.Person; public class RefactoredNewPersonGenerator { private final IdentityCreator identityCreator; private final PersonDataUpdater personDataUpdater; public RefactoredNewPersonGenerator(IdentityCreator identityCreator, PersonDataUpdater personDataUpdater) { this.identityCreator = identityCreator; this.personDataUpdater = personDataUpdater; } public Person generateNewIdentity(Person person) { String newName = identityCreator.createNewName(person); int newAge = identityCreator.createNewAge(person); List<Person> newSiblings = identityCreator.createNewSiblings(person); Person newPerson = new Person(newName, newAge, newSiblings); personDataUpdater.updatePersonData(newPerson); return newPerson; } }