//the client in this scenario static void Main(string[] args) { //instead of having to instantiate objects here with if(desiredEmoji == EmojiType.CLOWN){emoji = new ClownEmoji();} else if ... etc. //we can just pass in the associated type enum of the object we want to create EmojiTypes desiredEmoji = EmojiTypes.CLOWN; Emoji emoji = EmojiFactory.CreateEmoji(desiredEmoji); emoji.SayLine(); Console.WriteLine("Okay, their part is done, let us reuse this object and replace it with our next desired emoji."); desiredEmoji = EmojiTypes.SMILE; emoji = EmojiFactory.CreateEmoji(desiredEmoji); emoji.SayLine(); Console.ReadKey(); }