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