Factory Methode Pattern
Über das Factory Method Pattern erlaubt, in einer Superklasse Objekte zu erstellen aber in einer Unterklasse den Typ zu ändern.
Stellen wir uns vor wir wollen ein Space Shooter Spiel entwickeln, in dem man mit Verschiedenen Raumschiffen fliegen kann. Die Schiffe haben verschiedene Waffen mit verschiedenen arten von Projektilen.
So könnte eine Spaceship Klasse eine shoot() Funktion haben in der das Schiff ein Projektil erzeugt und in die Spielwelt einfügt. Wenn wir nun verschiedene Schiffsarten erstellen möchten, die die Spaceship Klasse erweitern und verschiedene Projektiltypen abfeueren sollen, müssten wir jedes mal die shoot() Funktion überschreiben. Um das zu umgehen, kann man das Factory Method Pattern anwenden und eine createProjectile Funktion auf der Schiffsklasse erstellen, die ein Projektil erstellt und zurückgibt und von der shoot Funktion aufgerufen wird. Das könnte dann wie folgt aussehen:
abstract class GameObject {
world: any;
tick() {}
}
abstract class Projectile extends GameObject {
}
class Bullet extends Projectile {
tick() {
// move bullet
}
}
class Missile extends Projectile {
tick() {
// aiming logic
}
}
abstract class Spaceship extends GameObject {
// FACTORY METHOD
createBullet() {
return new Bullet();
}
shoot() {
this.world.insert(this.createBullet())
}
}
class MissileShip extends Spaceship {
createBullet() {
return new Missile()
}
}
Quelle: https://refactoring.guru/design-patterns/factory-method
Standort Hannover
newcubator GmbH
Bödekerstraße 22
30161 Hannover
Standort Dortmund
newcubator GmbH
Westenhellweg 85-89
44137 Dortmund