Use this pattern when the type of object that needs to be created can't be anticipated or needs to be hidden: