Das Performance-Handbuch: Quelltextmuster


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);
  }   
}