Conceito de padrão simples de fábrica
É para estabelecer uma classe de fábrica e criar instâncias de algumas classes que implementam a mesma interface. A essência de um padrão simples de fábrica é que uma classe de fábrica determina dinamicamente qual instância da classe de produto (essas classes de produto herdam de uma classe ou interface dos pais) devem ser criadas com base nos parâmetros recebidos.
Diagrama de uml de modo simples de fábrica
Código de padrão de fábrica simples
Quando eu estava aprendendo o modelo simples de fábrica, usei um exemplo relacionado aos seres humanos. Os seres humanos são divididos em homens e mulheres no mundo e primeiro definem uma interface abstrata para produtos humanos.
/** * Este é o pacote de padrão de fábrica */pacote com.roc.factory;/** * interface abstrata do produto humano * @author liaowp * */interface pública humana {public void Say ();}Então, homens e mulheres têm maneiras de falar.
/** * Este é o pacote de padrão de fábrica */pacote com.roc.factory;/** * homem homem * @author liaowp * */public class Man implementa Human {/ * Say Method * @see com.roc.factory.human#Say () */@Override public void () {System.out.println () */@Override public void () {System.out.println () */@Override public void () {System.out.println () }} /** * Este é o pacote de padrão de fábrica */pacote com.roc.factory;/** mulher * @author liaowp * */public classe Mulher implementa humano {/ * siga método * @see com.roc.factory.human#Say () */@Override public void () {System.out.Println ("); }}Finalmente, escreva uma aula de fábrica para criar homens e mulheres. O primeiro método é alcançado usando o julgamento lógico.
pacote com.roc.factory;/** * fábrica simples * @author liaowp * */public class amostrafactory {public static humano makehuman (string type) {if (type.equals ("man")) {homem humano = novo homem (); homem de volta; } else if (type.equals ("womman")) {mulher humana = nova mulher (); mulher de volta; } else {System.out.println ("Não é possível produzir"); retornar nulo; }}}O segundo método é usar a radiação Java para implementá -la. Eu acho que esse tipo de implementação é melhor.
pacote com.roc.factory;/** * Implementação de radiação de fábrica simples * @author liaowp * */public classe samplefactory1 {public static humano makehuman (classe c) {humano humano = null; tente {humano = (humano) class.ForName (c.getName ()). NewInstance (); } catch (InstantionActionce E) {// TODO GENERATO AUTOGERATO CATCH Block System.out.println ("Classes ou interfaces abstratas não são suportadas"); E.PrintStackTrace (); } catch (ilegalAccessException e) {// TODO BLOCO DE CATAGEM AUTOGERATO E.PRINTSTACKTRACE (); System.out.println ("Sem permissões suficientes, ou seja, objetos privados não podem ser acessados"); } catch (classNotFoundException e) {// TODO GENERATO AUTOGERATO CACK BLOCO SYSTEM.OUT.println ("Classnot existe"); E.PrintStackTrace (); } retornar humano; }}Finalmente, o código do cliente
pacote com.roc.factory;/** * teste de fábrica simples * @author liaowp * */public class Client {public static void main (string [] args) {// Human Man = samplefactory.makehuman ("man"); // man.say (); // woman Human = spletFactory.makehumanMan "; Samplefactory.makehuman ("tttt"); Homem humano = samplefactory1.makehuman (man.class); man.Say (); Mulher humana = SampleFactory1.makehuman (mulher.class); mulher.Say (); }} Cenário de aplicativo de modo de fábrica simples
Vantagens: a classe de fábrica é a chave para todo o modelo. Ele contém os julgamentos lógicos necessários e determina qual objeto de classe específico deve ser criado com base nas informações fornecidas pelo mundo exterior. Ao usar a classe de fábrica, o mundo exterior pode se livrar da situação embaraçosa de criar diretamente objetos específicos do produto e só precisa ser responsável pelos objetos de "consumo". Não importa como esses objetos são criados e organizados. Suas respectivas responsabilidades e direitos são esclarecidos, o que é propício à otimização de toda a arquitetura do software.
Desvantagens: Como a classe da fábrica concentra a lógica de criação de todas as instâncias, viola o princípio da alta alocação de responsabilidade coesa, toda a lógica de criação está concentrada em uma classe de fábrica; As classes que ele podem criar só podem ser consideradas com antecedência. Se uma nova classe precisar ser adicionada, a classe de fábrica precisará ser alterada. À medida que o número de categorias específicas de produtos no sistema continua aumentando, pode haver um requisito para as classes de fábrica criarem diferentes instâncias de acordo com diferentes condições. Esse julgamento das condições e julgamento de tipos específicos de produtos estão entrelaçados, dificultando a eliminação de funções do módulo, o que é muito desfavorável para a manutenção e expansão do sistema;
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.