Definição de padrão de método de fábrica
O significado do padrão do método da fábrica é definir uma interface de fábrica para criar objetos de produto e adiar o trabalho real da criação para subclasses. A classe principal de fábrica não é mais responsável pela criação de produtos, para que a classe principal se torne uma função abstrata de fábrica e seja responsável apenas pelas interfaces que devem ser implementadas por subclasses específicas de fábrica. A vantagem de uma abstração adicional é que o modelo de método de fábrica pode permitir que o sistema introduza novos produtos sem modificar a função de fábrica específica.
Ele contém as seguintes funções:
Diagrama de classes uml de padrão
Exemplo
Suponha que haja três recargas, ou seja, recargas vermelhas, recargas azuis e recargas pretas. Os usuários esperam usar canetas esferográficas para esclarecer a cor do refil.
Descrição e uso da estrutura do padrão
1. Produto abstrato: Pencore.java
classe abstrata pública Pencore {cor de cordas; Public Resumo Void Writeword (strings);} 2. Produto específico (ConcreteProduct) _1: Redpencore.java
classe pública Redpencore estende Pencore {RedPencore () {color = "Red"; } public void writeword (strings s) {System.out.println ("Escreva a palavra"+color+":"+s); }} Produto específico (ConcreteProduct) _2: bluepencore.java
classe pública bluepencore estende Pencore {bluepencore () {color = "blue"; } public void writeword (strings s) {System.out.println ("Escreva a palavra"+color+":"+s); }} Produto específico (ConcreteProduct) _3: Blackpencore.java
classe pública Blackpencore estende Pencore {BlackPencore () {color = "Black"; } public void writeword (strings s) {System.out.println ("Escreva a palavra"+color+":"+s); }} 3. Construtor: Ballpen.java
classe abstrata pública Ballpen {Ballpen () {System.out.println ("Produziu uma caneta esferográfica com"+getPencore (). Color+"Refil Core"); } abstrato público pencore getPencore (); // Método da fábrica} 4. Concretecreator:
Redballpen.javapublic Classe Redballpen estende o Ballpen {public Pencore getPencore () {return New Redpencore (); }} Blueballpen.javapublic classe blueballpen estende o ballpen {public pencore getPencore () {return new bluepencore (); }} Blackballpen.javapublic Classe Blackballpen estende Ballpen {public Pencore getPencore () {return new Blackpencore (); }} 5. Application.java
public class Application {public static void main (string args []) {pencore pencore; Ballpen Ballpen = New Blueballpen (); pencore = ballpen.getPencore (); pencore.writeword ("Olá, fico feliz em conhecê -lo"); Ballpen = new Redballpen (); pencore = ballpen.getPencore (); pencore.writeword ("como você está"); Ballpen = new Blackballpen (); pencore = ballpen.getPencore (); pencore.writeword ("prazer em conhecê -lo"); }} Resumir
O padrão de método da fábrica pertence ao padrão de criação de classe. No modo de método de fábrica, a classe pai de fábrica é responsável por definir a interface pública para criar objetos de produto, enquanto a subclasse de fábrica é responsável por gerar objetos específicos do produto. O objetivo disso é atrasar a operação de instanciação da classe de produto para a subclasse de fábrica, ou seja, determinar qual classe de produto específica deve ser instanciada pela subclasse de fábrica.
O modelo de método de fábrica é uma abstração e promoção adicional do modelo simples de fábrica. Devido ao uso do polimorfismo orientado a objetos, o padrão de método da fábrica mantém as vantagens de um padrão simples de fábrica e supera suas desvantagens. No modelo de método da fábrica, a classe principal de fábrica não é mais responsável pela criação de todos os produtos, mas fornece o trabalho de criação específico à subclasse. Essa classe principal é responsável apenas por fornecer às interfaces que a fábrica específica deve implementar, mas não os detalhes da instanciação da classe de produto. Isso permite que o modelo de método de fábrica permita que o sistema introduza novos produtos sem modificar a função de fábrica. A principal vantagem do modelo de método de fábrica é que, ao adicionar novas classes de produtos, ele não precisa modificar o sistema existente e encapsula os detalhes da criação do objeto do produto. O sistema tem boa flexibilidade e escalabilidade; Sua desvantagem é que ela requer adicionar novas fábricas ao adicionar novos produtos, resultando em pares de classes do sistema, o que aumenta a complexidade do sistema até certo ponto.