Modo de fábrica simples
Diagrama de classe
Crie objetos correspondentes com uma condição através de uma classe de fábrica
// Funções de negócios interface pública ICALCulation {Double getResult (duplo nume, duplo numb); } classe pública CalcAdd implementa o iCalculocation {@Override public duplo getResult (duplo nume, duplo numb) {System.out.println ("add"); retornar numea + entorpecido; }} classe pública calcsubtract implementos iCalCulation {@Override public duplo getResult (duplo nume, duplo numb) {System.out.println ("subtração"); Retornar NUMA - NOM; }}/** O modo de fábrica simples se concentra em: criação de objetos* Crie uma classe de fábrica para criar instâncias de algumas classes que implementam a mesma interface ou têm relacionamentos de herança*/classe pública test4simple {public static void main (string [] args) {// string operação = "/"; String operação = "+"; // String operação = "-"; // String operação = "*"; dupla numa = 182, entorpece = 33; CULATION CREATECALC = calcSimpleFactory.CreateCalc (Operação); resultado duplo = createCalc.getResult (NUMA, NOMB); System.out.println (resultado); }} Os defeitos de uma fábrica simples: quando uma fábrica simples cria um produto, é necessário passar os parâmetros correspondentes. Se o passe estiver incorreto, o objeto não poderá ser recuperado.
Melhoria: Crie diferentes categorias de produtos de várias maneiras
classe pública calcmultiplefactory {public staticculation productidd () {return new calcAdd (); } public staticculation ProduSubtract () {return new calcsubtract (); } public staticculation productemultiply () {return new calcmultiply (); } iCaloculação estática pública produzida () {return new calcdivide (); }} classe pública test4multiple {public static void main (string [] args) {duplo nume = 182, numb = 33; CALCulation createCalc = calcmultiplefactory.produCeadd (); resultado duplo = createCalc.getResult (NUMA, NOMB); System.out.println (resultado); createCalc = calcmultiplefactory.produCesubtract (); resultado = createCalc.getResult (NUMA, NOMB); System.out.println (resultado); createCalc = calcmultiplefactory.produCesubtract (); resultado = createCalc.getResult (NUMA, NOMB); System.out.println (resultado); createCalc = calcmultipleFactory.producemultiply (); resultado = createCalc.getResult (NUMA, NOMB); System.out.println (resultado); createCalc = calcmultipleFactory.producedIvida (); resultado = createCalc.getResult (NUMA, NOMB); System.out.println (resultado); }} Padrão de fábrica abstrato
Existem vários conceitos: fábrica abstrata, fábrica física, produto abstrato, produto físico abstrato de fábrica: defina o método abstrato da criação de produtos. Entidade Factory: Produto específico Criação do produto abstrato: uma interface ou entidade de classe base Produto: implemente funções específicas ou diagramas de classe derivados
// Resumo Product1 Public Interface iProduct1 {public void show (); } // Resumo do produto 2 interface pública iProduct2 {public void show (); } // entity Product1 public class Product1 implementa iproduct1 {public void show () {System.out.println ("Produto Criado tipo 1"); }} // entidade Produto2 classe pública Product2 implementa iproduct2 {public void show () {System.out.println ("Produto Criado tipo 2"); }} / * * 1a 1b pertence ao produto1 na mesma estrutura de hierarquia de produtos * 2a 2b pertence ao produto2 * / public class GradeProduct1a estende o produto1 {@Override public void show () {super.show (); System.out.println ("Isso está sob o produto 1: Produto A"); }} public class GeradeProduct1b estende o produto1 {@Override public void show () {super.show (); System.out.println ("Isso está sob o produto 1: Produto B"); }} public class GeradeProduct1b estende o produto1 {@Override public void show () {super.show (); System.out.println ("Isso está sob o produto 1: Produto B"); }} public class GeradeProduct2a estende o produto2 {@Override public void show () {super.show (); System.out.println ("Isso está sob o produto 2: Produto A"); }} public class GeradeProduct2b estende o produto2 {@Override public void show () {super.show (); System.out.println ("Isso está sob o produto 2: Produto B"); }} // O abstrato cria diferentes produtos abstratos interface pública ifactory {public iProduct1 createproduct1a (); // Classe 1 Modelo do produto A public iproduct1 createproduct1b (); // Class 1 Modelo do produto B public iproduct2 createproduct2a () // Classe 2 Model A Public Iproduct2 2 Createprodut2; A fábrica cria produtos físicos, o tipo de retorno é o produto abstrato da classe pública implementa a fábrica {public iProduct1 createproduct1a () {return New GradeProduct1a (); } public iProduct1 createProduct1b () {return new GradeProduct1b (); } public iProduct2 createproduct2a () {return new GradeProduct2a (); } public iProduct2 createproduct2b () {return new GradeProduct2b (); }} /** Padrão de fábrica abstrato: usado para criar um conjunto de objetos relacionados ou interdependentes** Processo: fábrica abstrata, fábrica física produz produtos* Produto abstrato, produto físico realiza funções do produto* Desvantagens: quando você precisa adicionar um produto (constituído por uma entidade e entidade), a fábrica precisa mudar* / public a classe pública 4AbStract {Public), que é a fábrica. Fábrica(); IProduct1 Product1a = Factory.CreateProduct1a (); product1a.show (); IProduct1 Product1b = Factory.createProduct1b (); product1b.show (); IProduct2 Product2a = Factory.CreateProduct2a (); product2a.show (); IProduct2 Product2b = Factory.CreateProduct2b (); product2b.show (); }}