001/*
002 *                    BioJava development code
003 *
004 * This code may be freely distributed and modified under the
005 * terms of the GNU Lesser General Public Licence.  This should
006 * be distributed with the code.  If you do not have a copy,
007 * see:
008 *
009 *      http://www.gnu.org/copyleft/lesser.html
010 *
011 * Copyright for this code is held jointly by the individual
012 * authors.  These should be listed in @author doc comments.
013 *
014 * For more information on the BioJava project and its aims,
015 * or to join the biojava-l mailing list, visit the home page
016 * at:
017 *
018 *      http://www.biojava.org/
019 *
020 */
021
022package org.biojava.bio.seq;
023
024import org.biojava.bio.Annotation;
025import org.biojava.bio.symbol.SymbolList;
026
027/**
028 * The interface for objects that will manufacture sequences.
029 * <p>
030 * The factory layer is in here as sequences are potentialy heavy-weight, so we
031 * want to decouple their possibly complicated creation from the code that wants
032 * to make them.
033 *
034 * @author Matthew Pocock
035 * @deprecated use org.biojavax.bio.seq.io.RichSequenceBuilder or 
036 * use org.biojavax.bio.seq.io.SequenceBuilder
037 */
038public interface SequenceFactory {
039  /**
040   * Creates a sequence using these parameters.
041   *
042   * @param symList the SymbolList defining the 'sequence'
043   * @param uri the uri of the sequence.  This will be returned
044   *            by the getURN() method on Sequence.
045   * @param name   the name
046   * @param annotation  a hint for the annotation of the resulting sequence
047   * @return  a new Sequence object
048   */
049  Sequence createSequence(SymbolList symList,
050                          String uri, String name, Annotation annotation);
051}