Heim  >  Artikel  >  Java  >  Detaillierte Erläuterung gängiger Entwurfsmuster im Java-Factory-Muster

Detaillierte Erläuterung gängiger Entwurfsmuster im Java-Factory-Muster

高洛峰
高洛峰Original
2016-12-15 13:42:151272Durchsuche

Prinzipien von Entwurfsmustern: Für die Entschuldigungsprogrammierung

Die Rolle von Fabrikmustern:

A. Beim Entwurf der Anwendung wird die Erstellung von Objekten an einem Ort konzentriert oder durch vereinheitlicht Eine bestimmte Klasse verwalten (Frühling)

B. Objekte können direkt hinzugefügt werden, ohne die Anwendung zu ändern, was auch für die Objektpflege von Vorteil ist.

Arten von Fabrikmustern:

A. Einfache Fabrik

B. Fabrikmethode

C. Abstrakte Fabrik

Keil:

Es heißt, dass ein Chef im Nordosten drei Autos zu Hause hat, einen Mercedes-Benz, einen BMW und einen Lamborghini. Bei verschiedenen Gelegenheiten bat er den Fahrer, anders zu fahren Autos zum geselligen Beisammensein.

Einfache Fabrik:

Zusammenfassung:

Paket com.product.abstruct;

öffentliche Schnittstelle Auto {

                public void drive( );//Das Auto ist zum Fahren da, also muss es einen Motor haben

                                                                                               import com.product.abstruct.Car;

public class Audi implementiert Car {

public void drive(){//BMW ist auch ein Auto, kein Pferd, und es muss einen Motor haben

                                                                         öffentliche Klasse Benz implementiert Auto {

Public void Drive () {// Audi ist auch ein Auto, kein Dior, sondern auch ein Motor

// Todo Auto-Generatically ,heute fahre ich Benz. . . . ");

System.out.println (" Chef, einige in Ihren Anweisungen ... "); ======Lamborghini Province======

Fabrikklasse :

Die Fabrikklasse ist eine Managementklasse und die Person, die direkt für das Auto verantwortlich ist.

                                                   Paket com.product. Fabrik; Import com.product.implement .Benz;

public class Driver {

public static Car driveCar(String carName) throws Exception{

If(carName.equalsIgnoreCase("Benz" )) {

Neuen Benz zurückgeben ();

}

if (carname.equalSignorecase ("bmw") {

Neuen BWM zurückgeben ( );

                                                                 

                                                                                                                                            ., . Eines Tages reist der Chef nach England, um sich Liverpools Heimspiel gegen Aston Villa anzusehen, und muss einen BMW zum Flughafen fahren um 14 Uhr in einem BMW aufstehen. . .

Paket com.product.test;

Import com.product.abstruct.car;

Import Com.fuctory.driver;

Öffentliche Klasse Test {

                                                                                                                                                                                 public static void [] args) throws Exception{

Car car = Driver.driveCar("Benz");//Bitten Sie den Fahrer, Sie abzuholen

                                                                    ;//Ein-Klick-Start

                            { Da die Anzahl der Autos zunahm, mussten alle Autos von einem erfahrenen Fahrer verwaltet werden. Die jährlichen Inspektionen, Versicherungen, Tickets und Autowaschanlagen mussten von einem erfahrenen Fahrer verwaltet werden wird den alten Fahrer bitten, von Montag bis Samstag verschiedene Automodelle zu fahren. Zu diesem Zeitpunkt muss sich der alte Fahrer merken, welches Auto der Chef an welchem ​​Tag fahren muss, also macht er dem Chef einen Vorschlag: Geben Sie jedem ein Auto . Jedes Auto hat einen Fahrer und für jedes Auto gibt es eine zuständige Person. Sagen Sie mir einfach „Hallo“, und ich schicke die entsprechende Person, um den Chef abzuholen it... ...

                                                                                                                                           package com.product.car.abstruct;                                                                                                                                 Importieren com.product.car.abstruct.Car;

öffentliche Klasse AudiDriver implementiert Car {

                                                   

Paket com.product.car. implementieren;

import com.product.car.abstruct.Car;

öffentliche Klasse AudiDriver implementiert Car {

🎜> System.out.println("Die vier Kreise von Beamter werden wollen");


Car Manager (Veteran Triver)

Paket com.product.car.Manager; ‐     ‐ ‐ ‐ ‐ public Car driveCar();

       🎜>

package com.product.car.managerImpl;

Import com.product.car.abstruct.car

Import com.product.implement.audidriver;                                                                                                                                                                             Paket com.product.car.managerImpl;

import com.product .car.abstruct .car;

Import com.product.car.implement.benzdriver; zmanager implementiert CarManager {

                                           🎜>

                                                                              Paket com .product.test;

com.product.car.abstruct. Car;

                                                                                                                                                  🎜>

                                                                                    public static void main(String [] args) löst eine Ausnahme aus{ BMW hat sich Liverpool vs. Villa Hier angesehen

                                                                                                                               ’s’ it                               ‐ to ’ s’ s   ‐ ‐ ‐ ‐ Car driveCar = carManager.driveCar();

                                   driveCar.drive(); 🎜>

Das Obige ist eine einfache Fabrik- und Fabrikmethode im Fabrikmuster. Vergleichen wir zunächst die Unterschiede zwischen diesen beiden Mustern und ihre jeweiligen Vorteile.

Programmdesign-Perspektive:

a. Eine einfache Factory hat keine abstrakte Klasse, sondern nur eine Factory-Klasse. Übergeben Sie die Parameter, die zum Erstellen von Objekten erforderlich sind, und die Factory-Klasse erstellt sie einheitlich.

Definieren Sie eine Methode zum Erstellen von Produktobjekten Schnittstelle, diese Schnittstelle spielt diese Kernrolle. Er muss nur die Methoden definieren, die Unterklassen implementieren müssen, und das Objekt an das Objekt selbst übergeben, um

Vorteile und Nachteile zu erstellen:

a. Relativ einfach: Die Fabrikmethode sollte abstrakter sein. Der Vorteil besteht darin, dass problemlos neue Mitglieder hinzugefügt (mehr Fahrer rekrutiert) werden können, ohne dass die Rolle der Fabrik geändert werden muss (ohne den alten Fahrer zu entlassen oder ihn neu zuzuweisen). > b. Der Vorteil einer einfachen Fabrik besteht darin, dass sie nur entsprechende Objekte basierend auf Parametern erstellt. Die Nachteile liegen jedoch auch auf der Hand. Alle Objekte werden in dieser Klasse erstellt und die erstellten Objekte können nur im Voraus bekannt sein (Plötzlich kaufte der Chef eines Tages einen manuellen Jetta und musste den alten Treiber darüber informieren, dass ich einen Jetta gekauft und ihn in X eingefügt hatte.) Das Hinzufügen von Mitgliedsobjekten führt dazu, dass die Kernklasse Methoden hinzufügt, was gegen hohe Anforderungen verstößt Zusammenhalt Wenn die Anzahl spezifischer Produktkategorien im System weiter zunimmt, muss die Factory-Klasse möglicherweise unterschiedliche Instanzen entsprechend unterschiedlichen Bedingungen erstellen. Diese Art der Beurteilung von Bedingungen und der Beurteilung spezifischer Produkttypen sind miteinander verflochten, was es schwierig macht, die Verbreitung von Modulfunktionen zu vermeiden, und sich sehr nachteilig auf die Wartung und Erweiterung des Systems auswirkt.

Der nächste Schritt ist die Anwendung des Factory-Modus und Programmdesigns Wie können wir das Factory-Design-Muster sinnvoll anwenden? spezifisches Produkt. Dies ist bei der iterator()-Methode in der Java Collection der Fall.

b. Ich brauche nur ein Produkt, aber ich möchte und muss nicht wissen, welche Fabrik es produziert. Das heißt, die endgültige Entscheidung darüber, welche Fabrik ich verwenden soll Der Hersteller trifft die Entscheidung auf der Grundlage der aktuellen Systembedingungen, instanziiert eine bestimmte Fabrik und gibt sie an den Benutzer zurück. Dieser Entscheidungsprozess ist für den Benutzer transparent.

Ausführlichere Erklärungen gängiger Java-Entwurfsmuster – Artikel zu Factory-Mustern finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn