Maison  >  Article  >  Java  >  Comment utiliser le modèle de générateur Java pour créer des objets complexes

Comment utiliser le modèle de générateur Java pour créer des objets complexes

WBOY
WBOYavant
2023-05-10 13:34:121381parcourir

Introduction

Le modèle de construction en Java est un modèle de conception créationnel. Son objectif principal est de construire des objets complexes à travers une série d'étapes simples, permettant la création de différentes représentations d'objets complexes tout en masquant les détails de construction. par étape, c'est-à-dire créer d'abord un objet de base, puis ajouter progressivement plus de propriétés ou de pièces jusqu'à ce qu'un objet complet soit finalement construit

L'idée principale de ce modèle est de décomposer le processus de construction d'un objet en plusieurs étapes, chacune. step Ils peuvent tous s'exécuter indépendamment et revenir à un état intermédiaire une fois chaque étape terminée, puis utiliser une classe directrice pour coordonner ces étapes, et enfin créer un objet complet.

Le modèle de constructeur comprend généralement les rôles suivants :

.
  • Classe de produit (Product) : Un objet complexe construit avec plusieurs propriétés ou composants.

  • Classe de constructeur abstrait (Builder) : Définit les méthodes et les propriétés requises pour construire des objets complexes. ) : implémente les méthodes et propriétés définies dans la classe de constructeur abstraite et renvoie l'objet construit final

  • Classe Directeur (Director) : est responsable de la coordination du processus de construction de chaque classe de constructeur spécifique et du renvoi de l'objet de construction final,

  • implémentation

  • Créez d'abord une classe de produit
package com.fanqiechaodan.build;
import lombok.Data;
/**
 * @Classname Car
 * @Description 产品类
 */
@Data
public class Car {
    private String brand;
    private String model;
    private String color;
    private int maxSpeed;
}

Deuxièmement, créez une classe de constructeur abstrait

package com.fanqiechaodan.build;
/**
 * @Classname CarBuilder
 * @Description 抽象建造者类
 */
public abstract class CarBuilder {
    protected Car car;
    public CarBuilder(){
        car = new Car();
    }
    public abstract void buildBrand();
    public abstract void buildModel();
    public abstract void buildColor();
    public abstract void buildMaxSpeed();
    public Car getCar() {
        return car;
    }
}

Puis créez une classe de constructeur concret

package com.fanqiechaodan.build;
/**
 * @Classname BMWBuilder
 * @Description 具体构造者类
 */
public class BMWBuilder extends CarBuilder {
    @Override
    public void buildBrand() {
        car.setBrand("BMW");
    }
    @Override
    public void buildModel() {
        car.setModel("X6");
    }
    @Override
    public void buildColor() {
        car.setColor("Black");
    }
    @Override
    public void buildMaxSpeed() {
        car.setMaxSpeed(218);
    }
}

Créez une classe de directeur

package com.fanqiechaodan.build;
/**
 * @Classname Director
 * @Description 导演类
 */
public class Director {
    private CarBuilder carBuilder;
    public Director(CarBuilder carBuilder) {
        this.carBuilder = carBuilder;
    }
    public Car constructCar() {
        carBuilder.buildBrand();
        carBuilder.buildColor();
        carBuilder.buildMaxSpeed();
        carBuilder.buildModel();
        return carBuilder.getCar();
    }
}

Test

package com.fanqiechaodan.build;
/**
 * @Classname Demo
 * @Description 建造者模式
 */
public class Demo {
    public static void main(String[] args) {
        CarBuilder carBuilder = new BMWBuilder();
        Director director = new Director(carBuilder);
        Car car = director.constructCar();
        System.out.println(car.toString());
    }
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer