Latest web development tutorials

modo de fábrica

padrão de fábrica (padrão de fábrica) Java é um dos padrões de design mais comumente usados. Este tipo de padrões de projeto pertencem criar esquema, que fornece a melhor maneira de criar objetos.

Em modo de fábrica, não vamos expor o cliente para criar uma lógica quando você cria um objeto, e através do uso de uma interface comum para apontar para o objeto recém-criado.

introdução

Intenção: A definição de interface de um objeto criado, vamos subclasses decidir qual classe instanciar uma fábrica, o padrão de fábrica para fazer o processo de criação da demora para o sub-classe.

Principalmente para resolver: O principal problema das opções de interface.

Quando usar: quando criamos explicitamente diferentes instâncias sob plano de diferentes condições.

Como corrigir: deixa as subclasses para implementar a interface de fábrica, é um produto abstrato retornado.

O código da chave: o processo de criação executado em suas subclasses.

Exemplos de aplicação: 1, você precisa de um carro, você pode pegar de dentro da fábrica diretamente, sem a necessidade de tubulação o carro é como fazê-lo, bem como a implementação dentro do carro.2, Hibernate banco de câmbio simplesmente mudando dialeto e de condução pode ser.

Vantagens: 1, um chamador queria criar um objeto, só sei o seu nome nele.2, de alta escalabilidade, se você quiser adicionar um produto, enquanto a expansão de uma classe de fábrica pode ser. 3, protegendo a realização do produto, o chamador preocupa apenas com a interface do produto.

Desvantagens: cada aumento de um produto, é necessário adicionar classes e objectos para conseguir uma fábrica de betão, de modo que o número de classes no sistema aumenta exponencialmente, até um certo ponto, o aumento da complexidade do sistema, mas também aumenta a classe específica sistema dependência.Esta não é uma coisa boa.

cenários de uso: 1, Logger: Os registros podem ser gravados para o disco rígido local, o evento do sistema, servidor remoto, o usuário pode escolher para fazer logon em algum lugar.2, acesso a banco de dados, quando o usuário não sabe que tipo de sistema final usa um banco de dados eo banco de dados pode mudar. 3, criar um quadro para a conexão com o servidor, você precisa de três acordos, "POP3", "IMAP", "HTTP", podem estes três como uma categoria de produto, para alcançar uma interface comum.

Nota: Como uma classe modo de criar, onde for necessário para gerar objetos complexos, você pode usar o padrão Factory Method.Uma coisa a notar é que o lugar para objetos complexos usando o padrão de fábrica e objetos simples, em particular, só precisa ser preenchido por novos objetos criados sem o uso do modelo de fábrica. Se você usar o padrão de fábrica, é necessário introduzir uma classe de fábrica, que irá aumentar a complexidade do sistema.

realização

Nós vamos criar uma interface de classe de entidade e interface deFormaimplementaçãoShape.O próximo passo é definir classes de fábricaShapeFactory.

FactoryPatternDemo,nossa demo para obter a classe a ser usada objetoShapeShapeFactory. Ele irá transmitir informações(CIRCLE/ RECTANGLE / QUADRADO) paraShapeFactory,ele precisa obter o tipo de objeto.

padrão de fábrica UML diagrama

passo 1

Criar uma interface.

Shape.java

Forma interface pública {
   draw void ();
}

passo 2

Criar classe de entidade que implementa a interface.

Rectangle.java

public class Rectangle implementa Forma {

   @Override
   draw public void () {
      System.out.println ( "Dentro do retângulo :: draw () método.");
   }
}

Square.java

public class Praça implementa Forma {

   @Override
   draw public void () {
      System.out.println ( "Inside Praça :: draw () método.");
   }
}

Circle.java

classe pública Círculo implementa Forma {

   @Override
   draw public void () {
      System.out.println ( "Inside Circle :: draw () método.");
   }
}

passo 3

Criar uma fábrica para produzir as classes de entidade objeto com base na informação dada.

ShapeFactory.java

ShapeFactory classe pública {
	
   // Use getShape método para obter um objeto do tipo forma forma pública getShape (String shapeType) {
      if (shapeType == null) {
         return null;
      }		
      if (shapeType.equalsIgnoreCase ( "CIRCLE")) {
         voltar new Circle ();
      } Else if (shapeType.equalsIgnoreCase ( "RETÂNGULO")) {
         voltar new Rectangle ();
      } Else if (shapeType.equalsIgnoreCase ( "quadrado")) {
         retornar nova Square ();
      }
      return null;
   }
}

passo 4

Use a fábrica para obter um objeto de entidade da classe, passando informações de tipo.

FactoryPatternDemo.java

FactoryPatternDemo classe pública {

   main (String [] args) public static void {
      ShapeFactory shapeFactory = new ShapeFactory ();

      // Obter o objeto Circle, e chamar seu Shape1 método draw Forma = shapeFactory.getShape ( "CIRCLE");

      // Chamar o método de sorteio de shape1.draw círculo ();

      // Obter o objeto do retângulo, e chamar seu shape2 método draw Forma = shapeFactory.getShape ( "RETÂNGULO");

      // Chamar o método de sorteio de retângulo shape2.draw ();

      // Obter o objeto Square, e chamar seu shape3 método draw Forma = shapeFactory.getShape ( "quadrado");

      // Chamar o método draw Praça shape3.draw ();
   }
}

passo 5

Verifique saída.

Dentro Circle :: draw () método.
Dentro do retângulo :: draw () método.
Dentro Praça :: draw () método.