Independência entre camadas

Estou construindo uma Facade para minha camada superior mas o retorno de alguns métodos retornando objetos um tanto complexos que pertencem ao subsistema que é a camada inferior, qual a melhor alternativa para manter a ligação fraca entre as camadas?

Coloque algum codigo como exemplo do que está falando para termos uma ideia do que vc chamada de “objetos complexos”.

Facade:

class Aplication {
  //...
  public Obj getExpectedObj();
  //...
}
class Obj {
  //...
  public String getName() {}
  public String getPivateKey() {}
  public AppObj getSpecialObjUntilOnlyInAppLayer() {} //este metodo so seria util dentro da camada de aplicacao
  public void setName() {}
  public void setSpecialObj(AppObj ss) {}
  //...
}

Criar uma interface ate agora pareceu a melhor opcao.

Tem alguma coisa estranha ai. Primeiro seu façade não recebe argumentos, isso é muito suspeito.
Segundo parece que vc está usando um objeto para encapsular outro. Isto não parece necessário. Retorne o AppObj e pronto.

Realmente até agora não tinha visto nenhum método de um facade receber um parâmetro, mas existem operações de modificação que a camada superior deve ter acesso e para realizar as modificações preciso receber parâmetros do que dever ser incluído, atualizado ou excluído.