resumo
O padrão de design é uma arte. Se você realmente entende essa arte, descobrirá que o mundo se tornará mais bonito.
definição
Defina uma interface para criar um objeto, deixe sua subclasse decidir qual classe instanciar
Use cenários
Em qualquer lugar que você use objetos complexos, você pode usar o modo de fábrica
Uml
1. Fábrica abstrata
Resumo da fábrica: todos sabemos que as fábricas geralmente têm apenas uma função, ou seja, produção, por exemplo, fábrica de automóveis Geely, isto é, Geely Automobile, fabricante de telefones celulares para iPhone etc. para que possa ser resumido de uma maneira simples, ou seja, criar ();
2. Plantas de fabricação de automóveis específicos
Fábrica de automóveis específica: realiza uma fábrica abstrata, com processos e métodos reais para a fabricação de carros, etc.
3. Carro abstrato
Carros abstratos: geralmente sabemos que os carros podem correr, tocar música, navegar e girar são características comuns dos carros.
4. Carros específicos
Carro Resumo: Os carros de concreto percebem o carro abstrato e têm todas as suas funções. Obviamente, carros diferentes podem ter funções diferentes.
A breve introdução acima é basicamente que fábricas específicas de automóveis fabricam carros correspondentes, como fábricas da Audi, Volkswagen Factories, Volkswagen Cars etc.
Demoção de código
Entendemos claramente a relação entre eles acima, por isso usaremos o código para demonstrar nossas idéias e lógica acima no código:
(1) Fábrica de carros abstratos
pacote com.zengtao.demo.factory;/*** fábrica abstrata*/public abstrate classe carfactory {public abstrate <t estende o carro> t cremeCar (classe <t> cla);}(2) fábrica de automóveis específica
pacote com.zengtao.demo.factory;/*** Audi Factory*/public class Audifactory estende o carfactory {@suppresswarnings ("desmarcado") @Override public <t estende o carro> tente {car = (car) class.ForName (cla.getName ()). NewInstance (); } catch (Exceção e) {e.printStackTrace (); } retornar (t) carro; }}(3) Definindo carro abstrato
pacote com.zengtao.demo.factory; public abstract class Car {public abstrate void drive (); abstrato público void selfnagive (); Public Abstract Void Playmusic ();}(4) carro específico
(Audi Q3)
pacote com.zengtao.demo.factory; classe pública Audiq3car estende o Audicar {@Override public void drive () {System.out.println ("Audiq3car foi fabricado com sucesso"); System.out.println ("Audiq3car drive"); } @Override public void Selfnagive () {System.out.println ("Audiq3car Selfnagive"); } @Override public void playmusic () {System.out.println ("Audiq3car Selfnagive"); } @Override public void playMusic () {System.out.println ("Audiq3car PlayMusic"); System.out.println (""); }}(Audi Q5)
pacote com.zengtao.demo.factory; classe pública Audiq5car estende o Audicar {@Override public void drive () {System.out.println ("Audiq5car foi fabricado com sucesso"); System.out.println ("Audiq5car drive"); } @Override public void SelfNagive () {System.out.println ("Audiq5car Selfnagive"); } @Override public void playmusic () {System.out.println ("Audiq5car Selfnagive"); } @Override public void playmusic () {System.out.println ("Audiq5car PlayMusic"); System.out.println (""); }}(5) Ligue
pacote com.zengtao.demo; importar com.zengtao.demo.factory.audifactory; importar com.zengtao.demo.factory.audiq3car; importar com.zengtao.demo.factory.audiq5car; classe pública principal {public static void majin (string [] Audifactory (); // Use a fábrica para fazer com que o carro Q3 Audiq3car Audiq3car = Audiofactory.CreateCar (Audiq3car.class); // Use a fábrica para fazer com que o carro Q5 Audiq5car Audiq5car = Audifactory.CreateCar (Audiq5car.class); // Comece a dirigir e reproduzir música Audiq3car.Drive (); audiq3car.playmusic (); Audiq5car.Drive (); Audiq5car.playmusic (); }}(6) Resultados
Quanto ao exposto, o método da fábrica é usado para realizar o processo simples de fabricar um carro.
Primeiro ponto:
Na fábrica abstrata, vemos que o método CreateCar (CLA CLA), por que definimos isso assim? Use a reflexão para criar um carro específico. Dessa forma, nossos diferentes tipos de carros precisam apenas de condições correspondentes, eles podem ser produzidos? Portanto, é benéfico escrever dessa maneira, assim como muitos, o Audi possui Q3, Q5, A4, A6, A7, A8 e outras séries.
Segundo ponto:
Se tivermos outros carros, como a BMW, que também possui BMW X1, 320, X5, etc., também podemos implementá -lo de maneira muito simples, apenas implementar a fábrica abstrata e, em seguida, implementar o carro abstrato no carro específico, e a expansão também é muito conveniente.
Resumir
Está quase na hora de sair da fábrica abstrata aqui. O modelo de método de fábrica é um modelo de design relativamente simples e bom.
Mas também existem desvantagens, como: se houver novos e outros tipos de carros, você só precisa implementar fábricas abstratas e carros abstratos e, em seguida, criar duas novas classes
Mas se não for um carro, mas um telefone celular, você deve escrever tudo, o que fará com que muitas classes apareçam, se devem adotar o modelo de método de fábrica ou decidir com base nas necessidades.
NOTA: Não aplique padrões de design por uma questão de design. Obviamente, os padrões de método de fábrica também são comumente usados, como: método OnCreate da atividade, também carregamos e geramos interfaces correspondentes com base no layout XML que definimos, etc.
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.