Modo de aparência: também conhecido como Modo de fachada: a fachada de aparência fornece uma interface consistente para um conjunto de interfaces do subsistema, facilitando esse conjunto de subsistemas (reduz a complexidade do sistema original, introduzindo uma nova função de aparência, reduzindo o acoplamento entre a classe de cliente e o subsistema).
Fonte da imagem: Padrão de design: a base do software reutilizável orientado a objetos.
concluir
Requisitos de caso: alugar uma casa
Os alunos que experimentaram encontrar uma casa e alugar uma casa podem perceber que encontrar uma casa é uma coisa muito dolorosa. Eles não apenas precisam fugir da comunidade para a comunidade, mas também precisam negociar com o proprietário (segundo). Então eles aprenderam a serem inteligentes e não conversam mais entre si, mas encontram diretamente um agente imobiliário como Lianjia e eu amo minha família. Eles têm uma certa quantidade de suprimento de moradia em suas mãos. Precisamos apenas pagar uma comissão para eles, para que eles possam negociar com o proprietário em nosso nome. A maioria deles é muito profissional, economizando tempo e dinheiro. Neste momento, o agente imobiliário é uma fachada, e o inquilino da casa é o subsistema do subsistema:
Fachada
Classe de aparência: Saiba quais subsistemas são responsáveis por lidar com solicitações e proxies a solicitação do cliente ao objeto de subsistema apropriado:
classe pública MediumFacade {private cuiyuanapartment cuiyuan; private xixiapartment xixi; private XihuApartment XIHU; public MediumFacade () {Cuiyuan = novo Cuiyuanapartment ("Comunidade Cuiyuan", 900, 1); xixi = new XixiaPartment ("Xixi Garden", 1200, 1); xihu = novo Xihuapartment ("Comunidade Xihu", 2600, 1); } public void Rentinghouse (preço duplo) {// O preço é apropriado e há uma casa para formar se (preço> = cuiyuan.getprice () && Cuiyuan.getStatus ()! cuiyuan.setStatus (0); } else if (preço> = xixi.getPrice () && xixi.getStatus ()! = 0) {System.out.println ("Subscribe" + xixi.getLocation ()); xixi.setStatus (0); } else if (preço> = xihu.getprice () && xihu.getStatus ()! = 0) {System.out.println ("reserva" + xihu.getLocation ()); xihu.setStatus (0); } else {System.out.println ("lance muito baixo/sem listagem ..."); }}} Subsistema
Coleção de subsistemas: implemente funções do subsistema e lidera as tarefas atribuídas por objetos de fachada (observe que não há informações de fachada no subsistema, ou seja, não há referência de objeto de fachada):
/** * @author jifang * @since 16/8/23 10:12. */public Class XihuApartment {Private String Location; preço duplo privado; status privado int; public xihuapartment (localização da string, preço duplo, status int) {this.Location = Location; this.price = preço; this.status = status; } public string getLocation () {return Location; } public Double getPrice () {Return Price; } public int getStatus () {retornar status; } public void setStatus (status int) {this.status = status; }} classe xixiaPart {Private String Location; preço duplo privado; status privado int; public xixiaPartment (localização da string, preço duplo, status int) {this.Location = Location; this.price = preço; this.status = status; } public string getLocation () {return Location; } public Double getPrice () {Return Price; } public int getStatus () {retornar status; } public void setStatus (status int) {this.status = status; }} classe cuiyuanapartment {private string local; preço duplo privado; status privado int; public cuiyuanapartment (localização da string, preço duplo, status int) {this.Location = Location; this.price = preço; this.status = status; } public string getLocation () {return Location; } public Double getPrice () {Return Price; } public int getStatus () {retornar status; } public void setStatus (status int) {this.status = status; }} Cliente
Dessa forma, o cliente simplesmente entra em contato com um agente imobiliário e nos dá uma cotação, e eles nos ajudarão a entrar em contato com todos os proprietários que se encontram:
public class Client {@Test public void client () {MediumFacade fachada = new MediumFacade (); Facade.rentinghouse (800); }}resumo
Os alunos que têm experiência em desenvolvimento orientado a objetos podem tê-lo usado, mesmo que nunca tenham ouvido falar em padrões de aparência, porque ele incorpora perfeitamente a idéia do princípio da inversão de dependência e da lei de Dimit, que é um dos padrões mais usados.
usar
Primeiro de tudo, no estágio inicial do design, você deve conscientemente separar os níveis hierárquicos, como uma arquitetura clássica de três camadas, estabelecendo uma fachada entre camadas, que pode fornecer uma interface simples para subsistemas complexos e reduzir bastante o grau de acoplamento.
Em segundo lugar, no estágio de desenvolvimento, os subsistemas geralmente se tornam cada vez mais complexos devido à reconstrução contínua. Adicionar fachada pode fornecer uma interface simples e reduzir as dependências entre os módulos.
Terceiro, ao manter um sistema herdado, o sistema pode ser muito difícil de manter e expandir, mas como contém funções muito importantes, novos requisitos devem confiar nele. Nesse momento, uma fachada pode ser desenvolvida para o novo sistema, fornecendo uma interface relativamente clara e simples para projetar o código legado aproximado ou alto, permitindo que o novo sistema interaja com a fachada e a fachada interage com o código herdado para todo o trabalho complicado.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.