segunda-feira, 12 de setembro de 2011

Observer

Pessoal,

Hoje estou implementando o padrão observer no C#.

Para implementar o observer no C# existem duas interfaces

IObservable  e IObserver 


Onde IObservable é a classe que esta sendo observada.
E IObserver é a classe que observa.

Para exemplicar vamos fazer um sistema bem simples, sistema fofoqueira.

Vamos ter a classe visinho, que pode fazer alguma coisa

E a visinha fofoqueira, objservvar tudo que os visinhos fazem e vai gritar para os quatro cantos tudo o que ele fizer.

Vamos ver comom ficam as classes.



using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace VisinhaFofoqueira
{    class VisinhaFofoqueira     {        List<Visinho> visinhos;
        public VisinhaFofoqueira()         {            visinhos = new List<Visinho>();        }        public void monitorar(Visinho visinho){            visinho.fofoqueira = this;            visinhos.Add(visinho);            Console.WriteLine("Visinha esta monitorando o visinho: " + visinho.nome);        }
        public void pararDeMonitorar(Visinho visinho) {            visinhos.Remove(visinho);        }
        public void mudou() {            Console.WriteLine("Fofoqueira esta vendo que alguma coisa mudou");        }    }}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace VisinhaFofoqueira
{
    class Visinho
    {
        public string nome { get; private set; }
        public VisinhaFofoqueira Ffofoqueira;
        public VisinhaFofoqueira fofoqueira
        {
            get
            {
                return Ffofoqueira;    
            }
            set
            {
                Console.WriteLine("Visinho esta sendo monitorado pela fofoqueira");
                Ffofoqueira = value;
            }
        }
        public Visinho(String nome)
        {
            this.nome = nome;      
        }
        public void fazerAlgumaCoisa() {
            Console.WriteLine("Visnho: " + nome +" esta fazendo algo");
            fofoqueira.mudou();
        }     
    }


E o main para textar...



            VisinhaFofoqueira fofoqueira = new VisinhaFofoqueira();
            Visinho marcelo = new Visinho("Marcelo");
            Visinho gomes = new Visinho("Gomes");
            fofoqueira.monitorar(marcelo);
            fofoqueira.monitorar(gomes);
            marcelo.fazerAlgumaCoisa();
            Console.WriteLine("Fim");
            Console.ReadLine();


O C# tem duas interfaces para implementar o padrão observer IObservable  e IObserver  mas não consegui usar ainda!!!


Abraço!


Sugestões:
http://msdn.microsoft.com/pt-br/library/dd990377.aspx
http://brluz.wordpress.com/category/csharp/

Nenhum comentário:

Postar um comentário