Implementando Chain of Responsibility

07/06/2010

0

Olá Pessoal,Sou novo por aqui, estou começando em POO em C#.Fiz uma implementação do padrão  Chain of Responsibility, duma forma um pouco diferente, eu tenho uma serie de etapas de validações que um determinado objeto tem que passar, antes de ser inserido no banco de dados, eu tenho uma cadeia de objetos de validação (etapas) padrão, porem dependendo de alguns parametros, podem ser adicionadas etapas a essa cadeia, especificamente para aquele caso, entao  minha intenção com esse codigo é que eu posso criar um objeto de validação e adiciona-lo a o final da fila, apenas informando quem é o objeto de validação anterior. Gostaria da opnião dos colegas. // Classe padrão com o mecanismo da corrente, somente para herança.    public abstract class ValidadorObjetoCadastro<T>    {        public T Objeto { get; set; }        public ValidadorObjetoCadastro<T> ProximoValidador { get; set; }        protected ValidadorObjetoCadastro<T> ValidadorAnterior { get; set; }        public void ChamarProximoValidador()        {            ValidarObjeto();            if (ProximoValidador == null)                return;            ProximoValidador.Objeto = this.Objeto;            ProximoValidador.ChamarProximoValidador();        }        public void IniciarValidacao(T objeto)        {            if (ValidadorAnterior != null)            {                ValidadorAnterior.IniciarValidacao(objeto);            }            else            {                this.Objeto = objeto;                ChamarProximoValidador();            }        }        public ValidadorObjetoCadastro(ValidadorObjetoCadastro<T> validadorAnterior)        {            ValidadorAnterior = validadorAnterior;            if (ValidadorAnterior != null )            {                ValidadorAnterior.ProximoValidador = this;                            }        }        protected abstract void ValidarObjeto();    } // ============== Etapadas - Validaçoes ================      public class PrimeiroValidador : ValidadorObjetoCadastro<Pessoa>    {        public PrimeiroValidador()            : base(null)        {        }        protected override void ValidarObjeto()        {            System.Console.WriteLine("Validações do primeiro objeto");        }    }     public class SegundoValidador : ValidadorObjetoCadastro<Pessoa>    {        public SegundoValidador()            : base(new PrimeiroValidador())        {        }        protected override void ValidarObjeto()        {            System.Console.WriteLine("Validações do Segundo objeto");        }    }     public class TerceiroValidador : ValidadorObjetoCadastro<Pessoa>    {        public TerceiroValidador()            : base(new SegundoValidador())        {        }        protected override void ValidarObjeto()        {            System.Console.WriteLine("Validações do Terceiro objeto");        }    }

// Chamada
            TerceiroValidador terceiroValidador = new TerceiroValidador();            terceiroValidador.IniciarValidacao(new Pessoa());
 
 
Jackson Pimentel

Jackson Pimentel

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar