Entwurfsmuster – einfaches Fabrikmuster (2)

Einfaches Fabrikmuster

Definition: Das einfache Factory-Muster gehört zum Erstellungsmuster, das auch als statisches Factory-Methodenmuster bezeichnet wird.

  • Factory: Die Factory-Klasse, die den Kern des einfachen Factory-Musters bildet, ist für die Implementierung der internen Logik zum Erstellen aller Instanzen verantwortlich. Die Methode zum Erstellen einer Produktklasse in der Factory-Klasse kann direkt von der Außenwelt aufgerufen werden, um das erforderliche Produktobjekt zu erstellen.
  • IProduct: Abstrakte Produktklasse, die die übergeordnete Klasse aller Objekte erstellt, die die von allen Instanzen gemeinsam genutzte öffentliche Schnittstelle repliziert und beschreibt.
  • Produkt: Konkrete Produktklasse, erstellen Sie ein bestimmtes Instanzobjekt.

  1. Abstrakte Produktklasse
    Erstellen Sie eine abstrakte Computerproduktklasse. Der Code lautet wie folgt:
public abstract class Computer {
    
    
    /**
     * 产品的抽象方法,
     */
    public abstract void start();

}
  1. Spezifische Produktkategorien
    Spezifische Computerprodukte sind Lenovo-, HP- und ASUS-Computer:
public class HpComputer extends Computer {
    
    
    @Override
    public void start() {
        System.out.println("HpComputer.start 惠普电脑");
    }
}

public class LenovoComputer extends Computer {
    
    
    @Override
    public void start() {
        System.out.println("LenovoComputer.start 联想电脑");
    }
}

public class AsusComputer extends Computer {
    
    
    @Override
    public void start() {
        System.out.println("AsusComputer.start 华硕电脑");
    }
}
  1. Die Factory-Klasse
    stellt eine statische Methode createComputer zur Verfügung , die zum Erstellen von Computern verwendet wird. Wir müssen lediglich die Marke des Computers übergeben, den wir produzieren möchten, und schon wird ein Computerobjekt der entsprechenden Marke instanziiert.
public class Computerfactory {


    public static Computer createComputer(String type) {
        Computer computer = null;
        switch (type) {
            case "hp":
                computer = new HpComputer();
                break;
            case "asus":
                computer = new AsusComputer();
                break;
            case "leovo":
                computer = new LenovoComputer();
                break;
            default:
                break;
        }
        return computer;
    }

    public static void main(String[] args) {

        Computerfactory computerfactory = new Computerfactory();

        Computerfactory.createComputer("hp").start();
        Computerfactory.createComputer("leovo").start();
        Computerfactory.createComputer("asus").start();
    }

}

Szenarien sowie Vor- und Nachteile des einfachen Fabrikmusters

  • Zu verwendende Szenen:

    • Die Factory-Klasse ist dafür verantwortlich, weniger Objekte zu erstellen.
    • Kunden müssen nur die an die Factory übergebenen Parameter kennen und müssen sich nicht um die Logik der Objekterstellung kümmern.
  • Vorteile: Ermöglichen Sie Benutzern das Abrufen entsprechender Klasseninstanzen gemäß Parametern, vermeiden Sie die direkte Instanziierung von Klassen und reduzieren Sie die Kopplung.

  • Nachteil: Instanziierbare Typen werden bereits zur Kompilierzeit bestimmt. Wenn neue Typen hinzugefügt werden, muss die Fabrik geändert werden, was gegen das Offen-Geschlossen-Prinzip verstößt. Einfache Fabriken müssen alle zu generierenden Typen kennen und eignen sich nicht für den Einsatz, wenn zu viele Unterklassen oder zu viele Unterklassenebenen vorhanden sind.

Supongo que te gusta

Origin blog.csdn.net/u013290250/article/details/82347774
Recomendado
Clasificación