Java >> Java Tutorial >  >> Java

Entwurfsmuster – Fabrikmuster – Teil III

In diesem Artikel werden wir sehen, wie man ein Fabrikmuster verwendet. Factory-Pattern ist eine kreative Art von Design-Pattern, kurz gesagt, es bietet eine Möglichkeit, Objekte zu erstellen. Ein weiterer wichtiger Punkt, den es bei diesem Entwurfsmuster zu beachten gilt, ist, dass der Client, der das Factory-Muster verwendet, sich der Implementierung des Factory-Musters nicht bewusst ist.

Sogar in unserer vorherigen Post-Spring-Boot-REST-CRUD-API haben wir Fabrikmuster verwendet, um Manager auf Serviceebene zu implementieren. Als Teil dieses Beitrags zeigen wir ein weiteres Beispiel des Fabrikmusters. Fabrikmuster, das hauptsächlich in Fällen verwendet wird, in denen ein Client nur eine Klasse/ein Objekt benötigt, das die Arbeit zur Laufzeit erledigen kann, ohne Einzelheiten darüber zu wissen, wie es implementiert wurde.

Um zu zeigen, wie ein Fabrikmuster implementiert wird, nehmen wir an, wir haben verschiedene Fahrzeugtypen und möchten wissen, wie hoch ihre Höchstgeschwindigkeit ist.

Schnittstelle erstellen –

Unsere Schnittstelle des Fahrzeugs verfügt über eine Methode, um die Höchstgeschwindigkeit des Fahrzeugs zurückzugeben.

package com.betterjavacode.designpatterns.factoryexample;

public interface Vehicle 
{
    void speed();
}

Jetzt haben wir verschiedene Klassen (Auto, LKW, Bus, Motorrad), die diese Schnittstelle implementieren, um ihre maximale Geschwindigkeit zurückzugeben. Aus Artikelgründen zeigen wir nur eine Klasse.

package com.betterjavacode.designpatterns.factoryexample;

public class Car implements Vehicle 
{
  public void speed()
  {
     System.out.println("Max Speed of this car is 100 mph");
   }
}

Um eine Instanz eines Objekts zu erhalten, erstellen wir eine Factory-Klasse. Dadurch wird basierend auf dem Fahrzeugtyp eine geeignete Instanz des Fahrzeugobjekts zurückgegeben.

package com.betterjavacode.designpatterns.factoryexample;

public class VehicleFactory 
{

  public Vehicle getVehicle(String vehicleType)
  {
     if (vehicleType == null)
     {
        return null;
     }
     if (vehicleType.equalsIgnoreCase("car")) 
     {
        return new Car();
     }
     if (vehicleType.equalsIgnoreCase("bus")) 
     {
        return new Bus();
     }
     if (vehicleType.equalsIgnoreCase("motorcycle"))
     {
        return new Motorcycle();
     }
     if ( vehicleType.equalsIgnoreCase("truck"))
     {
        return new Truck();
     }
     return null;
}

}

Eine Fabrikmuster-Demoklasse erhält zur Laufzeit ein beliebiges Objekt vom Typ Fahrzeug.

package com.betterjavacode.designpatterns;

import com.betterjavacode.designpatterns.factoryexample.Vehicle;
import com.betterjavacode.designpatterns.factoryexample.VehicleFactory;

public class FactoryPatternDemo
{
    public static void getSpeed(String vehicleType) 
    {
       VehicleFactory vehicleFactory = new VehicleFactory();
       Vehicle veh1 = vehicleFactory.getVehicle(vehicleType);
       veh1.speed();
     }  
}

In diesem Beispiel haben wir gezeigt, wie ein Fabrikmuster vom Typ Entwurfsmuster implementiert wird. Der Code dafür ist verfügbar Entwurfsmuster.

Referenzen

  1. Beispiel für Fabrikmuster
  2. Werksmuster

Java-Tag