private static void TestandoFlyweightNotasMusicais() { var criadordenotas = new NotasMusicais(); var notas = new List <INota>() { criadordenotas.PegaNota("do"), criadordenotas.PegaNota("re"), criadordenotas.PegaNota("mi"), criadordenotas.PegaNota("fa"), criadordenotas.PegaNota("sol"), criadordenotas.PegaNota("la"), criadordenotas.PegaNota("si"), }; var piano = new Piano(); piano.Toca(notas); }
private static void Flyweight1() { var notasMusicais = new NotasMusicais(); var musica = new List <INota>() { notasMusicais.Get("do"), notasMusicais.Get("re"), notasMusicais.Get("mi"), notasMusicais.Get("fa"), notasMusicais.Get("fa"), notasMusicais.Get("fa"), notasMusicais.Get("do"), notasMusicais.Get("re"), notasMusicais.Get("do"), notasMusicais.Get("re"), notasMusicais.Get("re"), notasMusicais.Get("re"), notasMusicais.Get("do"), notasMusicais.Get("sol"), notasMusicais.Get("fa"), notasMusicais.Get("mi"), notasMusicais.Get("mi"), notasMusicais.Get("mi"), notasMusicais.Get("do"), notasMusicais.Get("re"), notasMusicais.Get("mi"), notasMusicais.Get("fa"), notasMusicais.Get("fa"), notasMusicais.Get("fa") }; var piano = new Piano(); piano.Toca(musica); }
static void Main(string[] args) { NotasMusicais notas = new NotasMusicais(); IList <INota> musica = new List <INota>() { notas.Pega("do"), notas.Pega("re"), notas.Pega("mi"), notas.Pega("fa"), notas.Pega("fa"), notas.Pega("fa"), }; Piano piano = new Piano(); piano.Toca(musica); //Memento Historico historico = new Historico(); Contrato c = new Contrato(DateTime.Now, "Euler Vital", TipoContrato.Novo); historico.Adiciona(c.SalvaEstado()); c.Avanca(); historico.Adiciona(c.SalvaEstado()); c.Avanca(); historico.Adiciona(c.SalvaEstado()); Console.WriteLine(c.Tipo); Console.WriteLine(historico.Pega(2).Contrato.Tipo); Console.ReadLine(); //Interpreter //((1 + 100) + 10) + (20 - 10) //Pode ser usado toda vezque nós temos uma arvore de expressoes que queremos avaliar IExpressao esquerda = new Soma(new Soma(new Numero(1), new Numero(100)), new Numero(10)); IExpressao direita = new Subtracao(new Numero(20), new Numero(10)); IExpressao soma = new Soma(esquerda, direita); Console.WriteLine(soma.Avalia()); //API Expression do C# Expression soma_01 = Expression.Add(Expression.Constant(10), Expression.Constant(100)); Func <int> funcao = Expression.Lambda <Func <int> >(soma_01).Compile(); Console.WriteLine(funcao()); //Visitor Console.WriteLine(soma.Avalia()); ImpressoraVisitor impressora = new ImpressoraVisitor(); soma.Aceita(impressora); //Bridge (Separa responsabilidade) IMensagem mensagem = new MensagemCliente("Euler"); mensagem.Enviador = new EnviaPorEmail(); mensagem.Envia(); Console.ReadLine(); //Command //OBS: Ideal para api´s que serão consumidas por celulares //Pois pode ser excutado posteriormente FilaDeTrabalho fila = new FilaDeTrabalho(); Pedido pedido1 = new Pedido("Euler", 120.90); Pedido pedido2 = new Pedido("Jean", 110.90); fila.Adiciona(new PagaPedido(pedido1)); fila.Adiciona(new PagaPedido(pedido2)); fila.Adiciona(new FinalizaPedido(pedido1)); fila.Processa(); //Adpter //Usado para aptar o codigo usado pela biblioteca nativa c# Cliente cliente = new Cliente(); cliente.Nome = "Euler"; cliente.Endereco = "Rua vergueiro"; cliente.DataDeNascimento = DateTime.Now; string xml = new GeradorDeXml().GeraXml(cliente); Console.WriteLine(xml); Console.ReadLine(); }