Erlaubt genau eine Instanz einer Klasse.
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
= new Singleton();
instance }
return instance;
}
}
Definiert eine Schnittstelle zur Erzeugung eines Objekts.
interface Factory {
create();
Product }
class ConcreteFactory implements Factory {
public Product create() {
return new ConcreteProduct();
}
}
Ein Subject benachrichtigt alle registrierten Observer über Änderungen.
interface Observer {
void update();
}
class ConcreteObserver implements Observer {
public void update() {
// Aktualisierung
}
}
Definiert eine Familie von Algorithmen.
interface Strategy {
void algorithm();
}
class ConcreteStrategyA implements Strategy {
public void algorithm() {
// Algorithmus A
}
}
Entkoppelt eine Abstraktion von ihrer Implementierung.
// Abstraktion
interface Shape {
void draw();
}
// Implementierung
interface DrawingAPI {
void drawCircle();
}
class Circle implements Shape {
private DrawingAPI api;
public Circle(DrawingAPI api) {
this.api = api;
}
public void draw() {
.drawCircle();
api}
}
class DrawingAPI1 implements DrawingAPI {
public void drawCircle() {
// Implementierung 1
}
}
Kapselt eine Anforderung als Objekt.
interface Command {
void execute();
}
class ConcreteCommand implements Command {
private Receiver receiver;
public ConcreteCommand(Receiver receiver) {
this.receiver = receiver;
}
public void execute() {
.action();
receiver}
}
Design Patterns sind wiederverwendbare Lösungen für gemeinsame Probleme in der Software-Entwicklung. Durch die Verwendung von Design Patterns kann der Code flexibler, wartbarer und verständlicher gestaltet werden. Sie dienen als Vorlagen, die in verschiedenen Kontexten angepasst werden können.