首頁 >Java >java教程 >Java筆記之如何使用生成器Generator

Java筆記之如何使用生成器Generator

无忌哥哥
无忌哥哥原創
2018-07-20 11:01:572357瀏覽

一、前言

和前一篇文章所述的迭代器 Iterator 不同,本文所述為生成器 Generator。這兩者有很大不同。迭代器是用於遍歷容器中的元素的,Java標準庫中是有 Iterator 介面及其實現的;但生成器是用於創建物件的,Java標準庫中並沒有提供 Generator 介面及其實現。
[註:要注意將此處的生成器Generator 和設計模式中的生成器模式(也就是建造者模式)區分,二者是不同的]

二、介紹

  1. 生成器(Generator)是一種專門用來建立物件的類別

  2. 它其實是工廠方法模式的一種應用,也是泛型應用於介面的一種

  3. 使用生成器建立新物件時,不需要任何參數就可以建立物件—>這也是與工廠方法模式的區別,工廠方法一般需要參數

  4. 一般,生成器只定義一個方法,該方法專門用於產生新物件

三、Generator 介面

Java 標準函式庫中是沒有包含Generator 介面的,因此生成器是需要自己定義的。

[Generator]

/**
 - 生成器接口
 - @author johnnie
 - @param <T>
 */
public interface Generator<T> {

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

}

四、生成器的使用

#[實例程式碼]

/**
 - 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);
    }

}

[輸出]

Person [id=0, name=johnnie, sex=Man]

以上是Java筆記之如何使用生成器Generator的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn