public static Figura GetFigura(String nome) { Figura fig = null; figuras.TryGetValue(nome, out fig); if (fig == null) { if (nome.Equals("oval preenchida")) { fig = new Oval(true); } else if (nome.Equals("oval não preenchida")) { fig = new Oval(false); } else if (nome.Equals("linha")) { fig = new Linha(); } figuras.Add(nome, fig); } return(fig); }
static void Main(string[] args) { Figura f = FiguraFactory.GetFigura("linha"); f.Desenha("amarela"); f = FiguraFactory.GetFigura("oval não preenchida"); f.Desenha("vermelha"); Console.ReadKey(); }
/* * - INTENÇÃO: usar compartilhamento para suportar eficientemente grandes quantidades de objetos de granularidade fina. */ static void Main(string[] args) { Figura f = FiguraFactory.getFigura("linha"); f.desenha("branca"); f = FiguraFactory.getFigura("oval preenchida"); f.desenha("vermelha"); f = FiguraFactory.getFigura("oval não preenchida"); f.desenha("verde"); }