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