Maison  >  Article  >  Java  >  Notes Java : Comment utiliser le générateur

Notes Java : Comment utiliser le générateur

无忌哥哥
无忌哥哥original
2018-07-20 11:01:572334parcourir

1. Introduction

Différent de l'Itérateur décrit dans le billet de blog précédent, cet article décrit un Générateur. Il y a une grande différence entre les deux. Les itérateurs sont utilisés pour parcourir les éléments dans un conteneur. La bibliothèque standard Java possède l'interface Iterator et son implémentation ; mais les générateurs sont utilisés pour créer des objets. La bibliothèque standard Java ne fournit pas l'interface Generator et son implémentation.
[Remarque : veillez à distinguer le générateur ici du mode générateur (c'est-à-dire le mode constructeur) dans le mode conception. Les deux sont différents]

2.

    Un générateur est une classe spécifiquement utilisée pour créer des objets
  1. Il s'agit en fait d'une application du modèle de méthode factory et d'un type A général appliqué à une interface
  2. Lors de l'utilisation d'un générateur pour créer un nouvel objet, l'objet peut être créé sans aucun paramètre—> C'est aussi la différence avec le modèle de méthode d'usine qui nécessite généralement des paramètres
  3. Généralement, le générateur ne définit qu'une seule méthode, qui est spécifiquement utilisée pour générer de nouveaux objets
  4. 3. Interface du générateur

Le standard Java. La bibliothèque n'inclut pas l'interface Generator, le générateur doit donc être défini par vous-même.

[Générateur]

4. Utilisation du générateur
/**
 - 生成器接口
 - @author johnnie
 - @param <T>
 */
public interface Generator<T> {

    /**
     - 用以产生新对象
     - @return
     */
    public T next();

}

[Exemple de code]

[Sortie]
/**
 - Generator 的实现类
 - @author johnnie
 *
 */
public class PersonGenerator implements Generator<Person> {

    private Class[] types = new Class[]{Person.class};

    public PersonGenerator() {  }

    @Override
    public Person next() {
        try {
            // 利用反射生成 Person 对象
            return (Person) types[0].newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

        return null;
    }

    public static void main(String[] args) {
        PersonGenerator generator = new PersonGenerator();
        Person person = generator.next();
        person.setId(0);
        person.setName("johnnie");
        person.setSex("Man");
        System.out.println(person);
    }

}

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:
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