package lectures.inheritance;
import util.annotations.WebDocuments;
/*
 * Illustrates use of static factory methods
 */
@WebDocuments({"Lectures/Inheritance.pptx", "Lectures/Inheritance.pdf", "Videos/Inheritance.avi"})
public class StringHistoryFactory { 
    public static BaseStringHistory createStringHistory() {
        return new ABaseStringHistory();
        // alternate return
//      return new AnInheritingStringSet();
    }
/*
 * createStringHistory is an example of a factory method.
 * 
 * Which statements are consistent with this example?
 * 
 * A factory method:
 *     (c) is a void method, returning nothing
 *     (b) always returns the same instance.
 *     (d) has a polymorphic return type, that is, can return an instance of multiple
 *     classes.
 *     (e) chooses which instance of an object type is returned
 *     (f) none of the above      
 */
}
/*
 * Next class StringHistoryReverser
 */