[quote=sergiotaborda][quote=ECO2004]Eu quero fornecer vários façades…cada um representando uma camada. O primeiro fornece um conjuntos de comandos básico ao cliente. Se o cliente desejar mais comandos, ele pode utilizar outra fachada, e assim por diante.
Se eu fornecer apenas façades, sem conexão entre elas, não estará configurado um sistema em camadas.[/quote]
Vc está misturando as bolas e estás misturando feio…
Fornecer mais comandos usando outra interface não é outra camada. Não tem nada que ver com camadas.
Vc já definiu sua camada de serviços que são a tv, som, dvd , etc… pronto. Não ha mais camadas no seu sistema de 5 classes. Vc quer mais camadas ? então crie mais camadas abaixo dos serviços ou acima do façade. Criar outro façade não é criar outra camada.
Agora, não ha razão para que o mesmo façade não possa fazer os comandos avançados. Aliás até deve, pela simples razão que é mais DRY. Porque vou ter outra classe conversando com os mesmos serviços se posso usar a mesma ?
Além disso faz sentido para o cliente só usar uma interface para controlar tudo. Esse foi o propósito de criar o façade para começo de conversa.
    public class Facade {  
      
        private Televisao televisao;  
        private DVD dvd;  
        private Som som;  
      
       //não ha acesso publico aos atributos acima  
      
            public void ligar(){  
      
                     televisão.ligar();  
                    dvd.ligar();  
                   som.ligar();  
      
           }  
           public void definirVolume(int volume){
                  televisão.definirVolume(volume);  
                    dvd.definirVolume(volume);  
                   som.definirVolume(volume);  
          }
      
      
    }  
      
    public class Exemplo {  
      
        void go() {  
            Facade facade = new Facade();  
            facade..volume(20);              
            facade.ligar();  
        }  
    }  
O façade existe para criar uma coerência para que usa. O cliente poderia usar os serviços em separado, mas assim é mais simples. A superficie da sua camada é menor ( a superficie é o numero de métodos publicados) o que facilita a manutenção futura.
Em resumo. O que você quer, não faz sentido. Ou pelo menos não com os nomes que vc está usando. Vc quer fazer outra interface e outra classe, ok, faça. Mas não diga que isso é uma camada.
Mas se vc entendeu bem o padrão Façade , vc não iria fazer outra interface e classe.[/quote]
Obrigado. Eu estava confundindo então o que eram as camadas no padrão.