Maison > Java > javaDidacticiel > Comment utiliser le modèle d'usine Java pour créer des objets et améliorer la réutilisation et la flexibilité du code

Comment utiliser le modèle d'usine Java pour créer des objets et améliorer la réutilisation et la flexibilité du code

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2023-05-14 08:25:05
avant
926 Les gens l'ont consulté

Introduction

Les modèles de conception d'usine Java sont principalement divisés en trois types :

Modèle d'usine simple : utilisez une classe d'usine pour encapsuler le processus de création d'objet, et le client n'a besoin que de transmettre différents paramètres pour obtenir différents objets de produits, évitant ainsi le création directe d'objets produit par le client

Modèle de méthode d'usine : abstrait la classe d'usine, chaque classe de produit spécifique correspond à une classe d'usine spécifique et la classe d'usine crée celle correspondante par polymorphisme. Pour les objets produit, le client n'a besoin que de connaître l'usine interface et sa classe d'implémentation, et peut changer dynamiquement l'implémentation de l'usine en fonction des besoins, avec une meilleure évolutivité.

Modèle d'usine abstrait : basé sur le modèle de méthode d'usine, abstrait à nouveau la classe d'usine, placez plusieurs interfaces d'usine dans une seule interface d'usine, chacune. un produit spécifique correspond à une classe d'usine spécifique et crée des objets de produit correspondants grâce au polymorphisme, qui a une meilleure évolutivité et un degré d'abstraction plus élevé, mais augmente également la complexité du système

Modèle d'usine simple

Définissez d'abord une classe de produit abstraite :

package com.fanqiechaodan.factory.simple.product;
/**
 * @Classname Product
 * @Description 抽象产品类
 */
public abstract class Product {
    public abstract void use();
}
Copier après la connexion

Ensuite, définissez la classe de produit spécifique

public class ProductA extends Product{
    @Override
    public void use() {
        System.out.println("使用具体产品类A...");
    }
}
public class ProductB extends Product{
    @Override
    public void use() {
        System.out.println("使用具体产品类B...");
    }
}
public class ProductC extends Product{
    @Override
    public void use() {
        System.out.println("使用具体产品类C...");
    }
}
Copier après la connexion

Puis définissez la classe d'usine pour créer différents produits

package com.fanqiechaodan.factory.simple.factory;
import com.fanqiechaodan.factory.simple.product.Product;
import com.fanqiechaodan.factory.simple.product.ProductA;
import com.fanqiechaodan.factory.simple.product.ProductB;
import com.fanqiechaodan.factory.simple.product.ProductC;
/**
 * @Classname SimpleFactory
 * @Description 工厂类
 */
public class SimpleFactory {
    public static Product createProduct(String type) {
        switch (type) {
            case "A":
                return new ProductA();
            case "B":
                return new ProductB();
            case "C":
                return new ProductC();
            default:
                throw new RuntimeException("不支持的产品类型:" + type);
        }
    }
}
Copier après la connexion

Test:

package com.fanqiechaodan.factory.simple;
import com.fanqiechaodan.factory.simple.factory.SimpleFactory;
import com.fanqiechaodan.factory.simple.product.Product;
/**
 * @Classname Demo
 * @Description 简单工厂模式
 */
public class Demo {
    public static void main(String[] args) {
        Product productA = SimpleFactory.createProduct("A");
        productA.use();
        Product productB = SimpleFactory.createProduct("B");
        productB.use();
        Product productC = SimpleFactory.createProduct("C");
        productC.use();
        Product productD = SimpleFactory.createProduct("D");
        productD.use();
    }
}
Copier après la connexion

Comment utiliser le modèle dusine Java pour créer des objets et améliorer la réutilisation et la flexibilité du code

Modèle de méthode d'usine

Définissez d'abord une interface pour représenter le produit

package com.fanqiechaodan.factory.method.product;
/**
 * @Classname Product
 * @Description 产品接口
 */
public interface Product {
    void use();
}
Copier après la connexion

Deuxièmement, définissez deux classes d'implémentation de produit

public class ProductA implements Product{
    @Override
    public void use() {
        System.out.println("使用具体产品A...");
    }
}
public class ProductB implements Product{
    @Override
    public void use() {
        System.out.println("使用具体产品B...");
    }
}
Copier après la connexion

Ensuite, définissez une interface d'usine pour créer des produits

package com.fanqiechaodan.factory.method.factory;
import com.fanqiechaodan.factory.method.product.Product;
/**
 * @Classname Factory
 * @Description 工厂接口
 */
public interface Factory {
    Product createProduct();
}
Copier après la connexion

Ensuite, définissez deux classes d'implémentation d'usine spécifiques, qui sont utilisées pour créer différents produits

public class FactoryA implements Factory{
    @Override
    public Product createProduct() {
        return new ProductA();
    }
}
public class FactoryB implements Factory{
    @Override
    public Product createProduct() {
        return new ProductB();
    }
}
Copier après la connexion

Test

package com.fanqiechaodan.factory.method.factory;
import com.fanqiechaodan.factory.method.product.Product;
import com.fanqiechaodan.factory.method.product.ProductB;
/**
 * @Classname FactoryB
 * @Description 工厂实现类B
 */
public class FactoryB implements Factory{
    @Override
    public Product createProduct() {
        return new ProductB();
    }
}
Copier après la connexion

Comment utiliser le modèle dusine Java pour créer des objets et améliorer la réutilisation et la flexibilité du code

Modèle d'usine abstrait

Première définition le produit abstrait

public interface ProductA {
    void doSomething();
}
public interface ProductB {
    void doSomething();
}
Copier après la connexion

Deuxièmement, définissez le produit spécifique

public class ProductA1 implements ProductA{
    @Override
    public void doSomething() {
        System.out.println("ProductA1 doSomething ...");
    }
}
public class ProductA2 implements ProductA{
    @Override
    public void doSomething() {
        System.out.println("ProductA2 doSomething ...");
    }
}
public class ProductB1 implements ProductB{
    @Override
    public void doSomething() {
        System.out.println("ProductB1 doSomething ...");
    }
}
public class ProductB2 implements ProductB{
    @Override
    public void doSomething() {
        System.out.println("ProductB2 doSomething ...");
    }
}
Copier après la connexion

Puis définissez l'usine abstraite

package com.fanqiechaodan.factory.abstractfactory.factory;
import com.fanqiechaodan.factory.abstractfactory.product.ProductA;
import com.fanqiechaodan.factory.abstractfactory.product.ProductB;
/**
 * @Classname AbstractFactory
 * @Description 抽象工厂
 */
public interface AbstractFactory {
    ProductA createProductA();
    ProductB createProductB();
}
Copier après la connexion

Définissez ensuite l'usine spécifique

public class Factory1 implements AbstractFactory{
    @Override
    public ProductA createProductA() {
        return new ProductA1();
    }
    @Override
    public ProductB createProductB() {
        return new ProductB1();
    }
}
public class Factory2 implements AbstractFactory{
    @Override
    public ProductA createProductA() {
        return new ProductA2();
    }
    @Override
    public ProductB createProductB() {
        return new ProductB2();
    }
}
Copier après la connexion

Test

package com.fanqiechaodan.factory.abstractfactory;
import com.fanqiechaodan.factory.abstractfactory.factory.AbstractFactory;
import com.fanqiechaodan.factory.abstractfactory.factory.Factory1;
import com.fanqiechaodan.factory.abstractfactory.factory.Factory2;
import com.fanqiechaodan.factory.abstractfactory.product.ProductA;
import com.fanqiechaodan.factory.abstractfactory.product.ProductB;
/**
 * @Classname Demo
 * @Description 抽象工厂模式
 */
public class Demo {
    public static void main(String[] args) {
        // 使用具体工厂1创建产品A和产品B
        AbstractFactory factory1 = new Factory1();
        ProductA productA1 = factory1.createProductA();
        ProductB productB1 = factory1.createProductB();
        productA1.doSomething();
        productB1.doSomething();
        // 使用具体工厂2创建产品A和产品B
        AbstractFactory factory2 = new Factory2();
        ProductA productA2 = factory2.createProductA();
        ProductB productB2 = factory2.createProductB();
        productA2.doSomething();
        productB2.doSomething();
    }
}
Copier après la connexion

Comment utiliser le modèle dusine Java pour créer des objets et améliorer la réutilisation et la flexibilité du code

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal