public interface IPessoa
{
String Andar();
}
public class Pessoa : IPessoa
{
public string Andar()
{
return " andei";
}
}
//Decorator
public class PessoaRapida : IPessoa
{
IPessoa p;
public PessoaRapida(IPessoa p)
{
this.p = p;
}
public String Andar()
{
return new StringBuilder(p.Andar())
.Append(" ")
.Append("rápido")
.ToString();
}
public String Correr()
{
return "corri";
}
}
//Decorator
public class PessoaLenta : IPessoa
{
IPessoa p;
public PessoaLenta(IPessoa p)
{
this.p = p;
}
public String Andar()
{
return new StringBuilder(p.Andar())
.Append(" ")
.Append("devagar")
.ToString();
}
}
class Program
{
static void Main(string[] args)
{
Pessoa pessoa;
pessoa = new Pessoa();
Console.WriteLine("usando Pessoa:");
Console.WriteLine(pessoa.Andar());
Console.WriteLine();
PessoaRapida pessoaRapida;
pessoaRapida = new PessoaRapida(pessoa);
Console.WriteLine("usando PessoaRapida:");
Console.WriteLine(pessoaRapida.Andar());
Console.WriteLine(pessoaRapida.Correr());
Console.WriteLine();
PessoaLenta pessoaLenta;
pessoaLenta = new PessoaLenta(pessoa);
Console.WriteLine("usando PessoaLenta:");
Console.WriteLine(pessoaLenta.Andar());
Console.ReadKey();
}
}