001 package listFW; 002 003 /** 004 * Abstract factory to manufacture IEmptyList<E> and INEList<E>. 005 * @author Dung X. Nguyen 006 * @author Stephen B. Wong 007 * @author Mathias Ricken - Copyright 2008 - All rights reserved. 008 * @since Copyright 2004 - DXN, SBW All rights reserved 009 * @stereotype factory 010 */ 011 public interface IListFactory<E> { 012 /** 013 * Creates an empty list. 014 * @return an IMTList object. 015 */ 016 public abstract IMTList<E> makeEmptyList(); 017 018 019 /** 020 * Creates a non-empty list containing a given first and a given rest. 021 * @param first a data object. 022 * @param rest != null, the rest of the non-empty list to be manufactured. 023 * @return an INEList object containing first and rest 024 * @exception IllegalArgumentException if rest is null. 025 */ 026 public abstract INEList<E> makeNEList(E first, IList<? extends E> rest); 027 }