To me using a specific object to modify another specific object seems like bad design, it throws away the polymorphism you have available. Do one of these two things: Create an object for initializing decks (Creating them, shuffling them) and keep decks as a separate object, or Integrate the functions needed into your class, so that it can process itself in the style of deck.shuffle(), deck.deal() or whatever. Option two is better for you as it's pretty unnecessary to use a factory method pattern for such a small program.