Srs.
Pelo que entendi a camada (empacotamento) Facade, serve para agrupar classes que possuiem um senso comun.
Tipo: Posso criar uma classe chamada TabelasFacade, onde vai unificar todas as classe que manipula tabelas (bairro, cidade, moeda, nascionalidade, tipo de historicio,… )do sistema. E ter outra clase Facade chamada CadastrosFacde para unificar todos os cadastros (cliente, fornecedor, produto, vendedor, …) do sistema, é isso ?
Nao… num é isso nao…
Imagine que vc tenha que trabalhar com um sistema bem complexo… que possua várias classes…
Trabalhar com essas varias classes poderia tornar dificil o trabalho
Entao é criada uma única interface para trabalhar com o conjunto de classes… essa interface é a Facade
Faz mais sentido ter um ClienteFacade… do que um TabelasFacade…
E no caso que eu tenho umas 15 classes de tabelas auxiliares do sistema, cada uma é uma Facade ?
Pelo que você comentou na Facade é unificado processos. Tipo: CadastrarCliente( cadastra cliente, o dependente, os contatos e referêmcias dele), é isso ?
Você poderia passar um exemplo pratico do dia-a-dia ?
Acredito que principalmente o Facade é utilizado para fazer uma camadas comunicar-se com outra subajdacente.
Esta comunicação não resume-se apenas a integração, mas tambem, uma forma de encapsular essas chamadas para facilitar e diminuir o acoplamento entre objetos.
Att…
[quote=getulio.gomes]E no caso que eu tenho umas 15 classes de tabelas auxiliares do sistema, cada uma é uma Facade ?
Pelo que você comentou na Facade é unificado processos. Tipo: CadastrarCliente( cadastra cliente, o dependente, os contatos e referêmcias dele), é isso ?
Você poderia passar um exemplo pratico do dia-a-dia ?[/quote]
É mais ou menos isso… nao tenho um exemplo aqui… pq nao costumo usar Facade… 
O padrão Facade é muito utilizado quando há uma regra de negócio que para ser executada perpassa vários subsistemas, num cenário normalmente complexo. Imagine, por exemplo, uma aplicação bancária que quer consultar o saldo de um determinado cliente.
...
Cliente cliente = ... // Instanciação de cliente
FabioRichBankFacade facade = ...// Instanciação do Facade
Double saldo = facade.consultarSaldo(cliente);
...
Daí esse facade vai chamar um método de um EJB remoto para, digamos, para verificar o cliente, e em seguida chamar outro EJB para consultar o saldo que por sua vez tem uma ligação com uma rotina de um mainframe e por aí vai…
Uma dica: procure entender o problema que o padrão de projeto se propõe a resolver ao invés de se apegar a nomes pomposos ou implementações específicas de plataforma. Um Singleton, por exemplo, pode ser implementado de maneira diferente em Java e Ruby. Aliás até mesmo em Java você pode implementar de maneiras diferentes.
Muita gente cai no erro de usar os padrões GoF ou Java EE porque são “bonitos” e acabam tornando o sistema mais complexo do que deveria.
[quote=fabiocsilva]O padrão Facade é muito utilizado quando há uma regra de negócio que para ser executada perpassa vários subsistemas, num cenário normalmente complexo. Imagine, por exemplo, uma aplicação bancária que quer consultar o saldo de um determinado cliente.
[/quote]
Acrescentaria apenas que podemos utilizar o facade, tambem, para organizar e fazer com que os objetos de outras camadas não tenha acesso ‘direto’ a implementação de determinadas funcionalidades. Um bom exemplo são as classes JasperManager do JasperReport, pois incapsulam a forma, e tambem, separa a comunicação entre as camadas necessarias para geração de relatorios.
Concordo em genero e grau, sempre devemos ver um padrão pelo optica de como resolver um problema utilizando-o, mas não procurar uma forma de utilizá-lo!!!