Singleton.. hvad og hvordan??
Vi sidder her til et lille Javaprojekt..Vi har gang på gang hørt at singleton design metoden er vejen frem.
Men vi er ikke helt med på hvad den gør og hvornår det er smart at bruge den.
Kunne nogen give os en beskrivelse af hvordan og hvornår man bruger den.. Samtidig ville det være rart med et eksempel..
Her er et eksempel på vores ene klasse:
/*
* Ingredient.java
*
* Created on 6. januar 2003, 12:34
*/
/**
*
* @author OS
*/
import java.util.LinkedList;
import java.util.Iterator;
public class Ingredient{
/** Instance variables for this class.*/
private String name;
private String unit;
private double qty;
private static LinkedList allIngredient = new LinkedList();
/** Creates a new instance of Ingredient */
public Ingredient(){
}
public Ingredient(String n, String u, double a){
name = n;
unit = u;
qty = a;
}
/** Adds the object to our allIngredient list */
public static void addIngredientToList(Ingredient ing){
allIngredient.add(ing);
System.out.println(allIngredient);
}
public static void deleteIngredient(String ingredientName){
System.out.println(allIngredient);
Iterator entryIt = allIngredient.iterator();
while(entryIt.hasNext()){
Ingredient ing = (Ingredient) entryIt.next();
if (ingredientName.equals(ing.name))
entryIt.remove();
System.out.println(allIngredient);
}
}
//* Get method that returns an Ingredient object with the given name*/
public static Ingredient getIngredient(String ingredientName){
Ingredient a = new Ingredient();
Iterator entryIt = allIngredient.iterator();
while(entryIt.hasNext()){
Ingredient ing = (Ingredient) entryIt.next();
if (ingredientName.equals(ing.name)){
a = (Ingredient) ing;
}
//System.out.println(allIngredient);
}
return a;
}
public static LinkedList getAllIngredient(){
LinkedList per = new LinkedList();
Iterator entryIt = allIngredient.iterator();
while(entryIt.hasNext()){
Ingredient ing = (Ingredient) entryIt.next();
per.add(ing);
}
System.out.println(per);
return per;
}
public String getName(){
return name;
}
public String getUnit(){
return unit;
}
public double getQty(){
return qty;
}
}
Klassen Ingredient indeholder alle ingredienser i vores lille husholdnings-system :) Vi har valgt at gemme disse objekter i vores "static LinkedList allIngredient".. Dette betyder desværre at vi får en del statiske metoder hvilket man vel egentlig burde undgå? Kan singleton rette op på dette?