Fabrikmethode
parent
a7df6f9de5
commit
b741855c12
Binary file not shown.
|
@ -0,0 +1,75 @@
|
||||||
|
package DesignPatterns.Erzeugungsmuster_CreationalPatterns.Factory;
|
||||||
|
|
||||||
|
/* - Erzeugung neuer Objekte nicht im Konstruktor einer Klasse durchführen, sondern durch eine statische Methode
|
||||||
|
*
|
||||||
|
* Verwendung Eine Fabrikmethode:
|
||||||
|
* - erzeugt bei jedem Aufruf neue Objekte
|
||||||
|
* - unterbindet den direkten Zugriff auf die Konstruktoren einer Klasse
|
||||||
|
*
|
||||||
|
* Eigenschaften:
|
||||||
|
* - einem privaten Konstruktor
|
||||||
|
* - einer öffentlichen statischen Methode die den privaten Konstruktor nutzt
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class Factory_method {
|
||||||
|
|
||||||
|
// Privater Konstruktor: Verhindert Instanziierung
|
||||||
|
private Factory_method() {
|
||||||
|
}
|
||||||
|
|
||||||
|
// public statische Methode zum Erstellen neuer Objekt
|
||||||
|
public static Car createCar(String type) {
|
||||||
|
switch (type) {
|
||||||
|
case "Sedan":
|
||||||
|
return new SedanCar();
|
||||||
|
case "Small":
|
||||||
|
return new SmallCar();
|
||||||
|
case "Sport":
|
||||||
|
return new SportCar();
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
Car sedan = Factory_method.createCar("Sedan");
|
||||||
|
Car small = Factory_method.createCar("Small");
|
||||||
|
Car sport = Factory_method.createCar("Sport");
|
||||||
|
|
||||||
|
System.out.println("Price of Sedan Car: $" + sedan.getPrice());
|
||||||
|
System.out.println("Price of Small Car: $" + small.getPrice());
|
||||||
|
System.out.println("Price of Sport Car: $" + sport.getPrice());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// oder Interface
|
||||||
|
abstract class Car{
|
||||||
|
public abstract int getPrice();
|
||||||
|
}
|
||||||
|
|
||||||
|
class SedanCar extends Car {
|
||||||
|
@Override
|
||||||
|
public int getPrice() {
|
||||||
|
return 100000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class SmallCar extends Car {
|
||||||
|
@Override
|
||||||
|
public int getPrice() {
|
||||||
|
return 50000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class SportCar extends Car {
|
||||||
|
@Override
|
||||||
|
public int getPrice() {
|
||||||
|
return 250000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue