//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(); }
public static Emoji CreateEmoji(EmojiTypes emojiType) { switch (emojiType) { case EmojiTypes.CLOWN: return(new ClownEmoji()); case EmojiTypes.SMILE: return(new SmileEmoji()); default: Console.WriteLine("No matching emoji found, construction default!"); return(new SmileEmoji()); } }