public final class Strikker extends Thread { // vil ikke ha subklasser av Strikker, bruker final private static Strikker instans; // vi deklarerer en instans av oss selv, foreløpig null public Spinneri spinneri; // tråden bruker to monitorer public Strikkeklubb strikkeklubb; public String navn; // Et eksempel på designmønsteret Singleton private Strikker(String navn, Spinneri spinneri, Strikkeklubb strikkeklubb) { // konstruktøren er private slik at vi ikke kan opprette en instans utenfra klassen this.spinneri = spinneri; this.strikkeklubb = strikkeklubb; this.navn = navn; } // metoden må være static for at vi skal kunne kalle den utenfra klassen uten en instans av klassen (uten et Strikker-objekt) public static Strikker hentInstans(String navn, Spinneri spinneri, Strikkeklubb strikkeklubb) { // må ta inn samme parametre som konstruktøren til klassen if (instans == null) { instans = new Strikker(navn, spinneri, strikkeklubb); // oppretter hvis vi ikke allerede har en instans } return instans; // returnerer alltid den samme instansen } @Override public void run() { if (spinneri.kjoepGarn()) { // en enkel oppgave, skal bare gjøre den én gang System.out.println("Woho! Lykke! Du har fått kjøpt gaarn!"); strikkeklubb.strikkKumulusBluse(navn); } } }