Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 520069
            [titulo] => Como implementar uma classe FACADE (FACHADA) (Boas práticas) CSharp
            [dataCadastro] => DateTime Object
                (
                    [date] => 2015-05-17 16:06:03
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 232232
            [status] => M
            [isExample] => 
            [NomeUsuario] => Joel Rodrigues
            [Apelido] => 
            [Foto] => 232232_20161017163010.jpg
            [Conteudo] => Você não estaria ferindo questões de camadas, pois as três classes estão na mesma camada.Você poderia estar ferindo o conceito de Responsabilidade Única (S do SOLID), mas considerando que se trata de um facade, o objetivo estaria claro e quem fosse utilizar teria total conhecimento do que está fazendo. Caso fosse necessário, poderia optar por usar cada classe individualmente.
Abraço. ) )

Como implementar uma classe FACADE (FACHADA) (Boas práticas) CSharp

Jalber Romano
   - 05 mai 2015

Olá pessoal!
Sou marinheiro de primeira viagem com programação em camadas e estou pegando alguns tutoriais na net sobre o uso de classes FACADE, pois estou precisando muito...
Tenho uma aplicação em 4 camadas (conexaoBanco, ObjetoTransferencia, Apresentacao e RegrasNegocio ). Na camada Regras de negócio, tenho várias classes com seus respectivos métodos (Inserir, Atualizar, Excluir, etc...). Vou citar um exemplo simples: Eu precisarei dar um insert em 3 tabelas (Clientes, PessoaFisica e Pessoa) simultaneamente e para facilitar, gostaria de usar uma classe FACADE...
Dúvida:
O mais correto seria eu criar a classe FACADE na camada REGRAS DE NEGÓCIOS ou devo criar uma camada FACADE e dentro dela criar as classes do tipo Facade?
O que seria mais correto?
obrigado...
Abraço a todos! :)

Post mais votado

Joel Rodrigues
   - 17 mai 2015

Você não estaria ferindo questões de camadas, pois as três classes estão na mesma camada.Você poderia estar ferindo o conceito de Responsabilidade Única (S do SOLID), mas considerando que se trata de um facade, o objetivo estaria claro e quem fosse utilizar teria total conhecimento do que está fazendo. Caso fosse necessário, poderia optar por usar cada classe individualmente.
Abraço.

1
|
0

Joel Rodrigues
   - 15 mai 2015

O ideal é criar uma classe que tenha como responsabilidade fazer as operações "conjuntas" nessas tabelas. Por exemplo, se isso é um cadastro de clientes, você pode ter na classe responsável por inserir clientes, um único método que insere nas três tabelas. Afinal, para a camada mais externa está sendo feito uma inserção de cliente, certo?
Abraço.

Jalber Romano
   - 17 mai 2015

Obrigado por responder Joel.

Na camada REGRAS DE NEGÓCIO eu estou criando as classes ClienteNegocios, PessoaFisicaNegocios e PessoaNegocios e cada uma delas possui um método Inserir()... Digamos que eu apenas criasse apenas um método inserir() na classe ClienteNegocios, que desse um insert nas 3 tabelas simultaneamente.. minha preocupação seria: Será que não estaria fugindo do conceito de Camadas, e daquelas regras como o uso de uma classe FACADE, etc? É que por não ter experiência tenho esses receios... o que você acha?

Obrigado, mais uma vez, por ter respondido...

Jalber Romano
   - 31 mai 2015

Obrigado pela dica Joel :)