Zum Inhalt springen

Das Performance-Handbuch: Quelltextmuster

Aus Wikibooks


Natürlich sind dies hier nur Kernsysteme, welche entsprechend angepasst werden sollten. Sie können jedoch schon unterschiedliche Ansätze erkennen.

Objektpool

[Bearbeiten]

Ein Objektpool verwaltet eine Anzahl von Objekten, übernimmt deren Verwaltung, Erzeugung und Zerstörung und ermöglicht die Wiederverwendung von Instanzen.

// Beispiel 1 – Quelltext für einen Objektpool
// Quelle Java Spektrum 04/1998
public interface ReusableObject{
  public void delete();
}
 
import java.util.Stack;
public class ObjectPool implements reusableObject{
  private static Stack objectPool = new Stack();
  public static ObjectPool newInstance (Class_1 cl_1, ..., Class_n cl_n){
    if (objectPool.empty()){
      return new ObjectPool(cl_1, ..., cl_n);
    }
    ObjectPool object = (ObjectPool) objectPool.pop();
    object.init (cl_1, ..., cl_n);
    return object;
  }
  private ObjectPool (Class_1 cl_1, ..., Class_n cl_n){
    init(cl_1, ..., cl_n);
  }
  private void init (Class_1 cl_1, ..., Class_n cl_n){
    // Initalisiere neues Objekt
  }
  public void delete(){
    objectPool.push(this);
  }
  // sonstige Methoden der Klasse

Das folgende Beispiel hat den Vorteil, dass mehrere Objektpools für unterschiedliche Datentypen angelegt werden können.

// Beispiel 2 – Quelltext für einen Objektpool
// Quelle Java Magazin 06/2000
public final class ObjectPool{
  private Stack pool = new Stack();
  public ObjectPool(){
    // Pooled Objekte anlegen
  }
  public Object getObject(){
    return pool.pop();
  }
  public void recycleObject(Object o){
    poop.push(o);
  }   
}