Heim  >  Artikel  >  Backend-Entwicklung  >  Problem mit dem PHP-Factory-Methodenmuster

Problem mit dem PHP-Factory-Methodenmuster

coldplay.xixi
coldplay.xixiOriginal
2020-08-03 11:17:112245Durchsuche

PHP-Factory-Methodenmuster: 1. Die Factory-Methode besteht darin, eine unabhängige Factory-Klasse für ein Produkt bereitzustellen und verschiedene Produktinstanzen über verschiedene Factory-Instanzen zu erstellen. 2. Sie verfügt über eine gute Kapselung und eine klare Codestruktur Skalierbarkeit und schirmt Produktkategorien ab.

Problem mit dem PHP-Factory-Methodenmuster

PHP-Factory-Methodenmuster:

1. Was ist das Factory-Methodenmuster

Factory Methode Die Aufgabe besteht darin, eine unabhängige Factory-Klasse für ein Produkt bereitzustellen und über verschiedene Factory-Instanzen unterschiedliche Produktinstanzen zu erstellen.

2. Vorteile des Factory-Methodenmusters

Es verfügt über eine gute Kapselung und eine klare Codestruktur. Es gibt bedingte Einschränkungen für die Erstellung jedes Objekts. Beispiel: Um ein bestimmtes Produktobjekt aufzurufen, müssen Sie nur den Klassennamen und die Einschränkungsparameter des Produkts kennen, ohne den komplexen Prozess der Erstellung des Objekts selbst zu kennen. Reduzieren Sie die Kopplung zwischen Modulen.

hat eine gute SkalierbarkeitUm eine Produktkategorie hinzuzufügen, müssen Sie nur eine Fabrikklasse entsprechend hinzufügen, wie im folgenden Beispiel, wenn Sie eine Datenbank hinzufügen müssen Oracle Zum Betrieb müssen Sie lediglich eine Oracle-Klasse hinzufügen, und die Factory-Klasse kann die Systemerweiterung abschließen, ohne Aufgaben zu ändern.

Produktkategorien blockieren. Diese Funktion muss sich nicht darum kümmern, wie sich die Implementierung der Produktklasse ändert. Solange die Schnittstelle des Produkts unverändert bleibt Das System sollte sich nicht ändern.

3. Nutzungsszenarien

Der Verbindungsmodus (connectMode) und die Zahlungsmethode (payMode) von Alipay, WeChat und UnionPay. Im Werksmodus muss der „Kunde“ die spezifische Verbindungs- und Zahlungsmethode nicht kennen und muss lediglich connectMode und payMode aufrufen. Vorgänge wie der Datenbankverbindungsmodus (connectMode) und der Abfragemodus (selectMode) wie

MySQL, SQL Server und Oracle können im Factory-Modus gekapselt werden.

Schauen wir uns den konkreten Fall an:

Produktkategorie:

    //抽象产品类
    abstract class DataBase
    {
        abstract function connect();
        abstract function getOne();
    }
    
  //具体产品类
    class MySql extends DataBase
    {
        function connect()
        {
            return "MySQL连接对象返回";
        }
    
        function getOne()
        {
            return "MySQL返回查询结果";
        }
    }
    
  //具体产品类
    class SqlServer extends DataBase
    {
        function connect()
        {
            return "SQL Server连接对象返回";
        }
    
        function getOne()
        {
            return "SQL Server返回查询结果";
        }
    }

Fabrikkategorie:

//抽象工厂类
    abstract class FactoryDataBase{
        function createDataBase(){}
    }
    
  //具体工厂类
    class FactoryMySql extends FactoryDataBase
    {
        public function createDataBase()
        {
            return new MySql();
        }
    }
    
  //具体工厂类
    class FactorySqlServer extends FactoryDataBase
    {
        public function createDataBase()
        {
            return new SqlServer();
        }
    }

Kunde:

 $mysql = new FactoryMySql();
 $db1 = $mysql->createDataBase();

4. Die Zusammensetzung des Fabrikmethodenmusters

  • Abstrakte Fabrikrolle: Dies ist der Kern des Fabrikmethodenmusters , und es hängt mit der Anwendung zusammen. Das Programm hat nichts damit zu tun. Es handelt sich um die Schnittstelle, die eine bestimmte Factory-Rolle implementieren muss, oder um die übergeordnete Klasse, die geerbt werden muss.

  • Spezifische Factory-Rolle: Sie enthält Code, der sich auf eine bestimmte Geschäftslogik bezieht. Wird von einer Anwendung aufgerufen, um ein Objekt zu erstellen, das einem bestimmten Produkt entspricht.

  • Abstrakte Produktrolle: Es handelt sich um die übergeordnete Klasse, die von einem bestimmten Produkt oder der implementierten Schnittstelle geerbt wird.

  • Spezifische Produktrolle: Das von der spezifischen Factory-Rolle erstellte Objekt ist eine Instanz dieser Rolle.

Das Factory-Methodenmuster scheint die Erstellung von Objekten perfekt verpackt zu haben, sodass das Client-Programm nur die von der abstrakten Produktrolle bereitgestellte Schnittstelle verarbeitet. Müssen wir also überall im Code Fabriken haben? Keine Notwendigkeit. Möglicherweise können Sie die Verwendung des Factory-Methodenmusters in den folgenden Situationen in Betracht ziehen:

  • Wenn das Client-Programm den Erstellungsprozess des zu verwendenden Objekts nicht kennen muss.

  • Die vom Client-Programm verwendeten Objekte können sich ändern oder das spezifische verwendete Objekt ist möglicherweise überhaupt nicht bekannt.

Verwandte Lernempfehlungen: PHP-Programmierung vom Einstieg bis zur Beherrschung

Das obige ist der detaillierte Inhalt vonProblem mit dem PHP-Factory-Methodenmuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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