Heim >Backend-Entwicklung >PHP-Tutorial >Abstraktes Fabrikmuster in PHP

Abstraktes Fabrikmuster in PHP

WBOY
WBOYOriginal
2016-08-08 09:31:30810Durchsuche

Der Unterschied zwischen dem abstrakten Fabrikmuster
und dem Fabrikmethodenmuster besteht darin, dass die abstrakte Fabrik zuerst die Fabrik erstellt und dann die Fabrik das Produkt (Instanz) erstellt.

Definieren Sie eine Schnittstelle zum Erstellen Objekte und lassen Sie die Unterklasse entscheiden, welche Klasse instanziiert werden soll. Er kann das Problem geschlossener und offener Prinzipien im einfachen Fabrikmodell lösen;

// 产品(数据库)标准


 interface DbInterface{
	public function connect(Array $params=array());
    public function query($sql);
    public function insert($table, $record);
    public function update($table, $record, $where);
    public function delete($table, $where);
}



// 具体产品(Mysql)

class MysqlDb implements DbInterface(){

    public function connect(Array $params=array());
    public function query($sql){}
    public function insert($table, $record){}
    public function update($table, $record, $where){}
    public function delete($table, $where){}

}


class OracalDb implements DbInterface(){

    public function connect(Array $params=array()){}
    public function query($sql){}
    public function insert($table, $record){}
    public function update($table, $record, $where){}
    public function delete($table, $where){}

}



// 构造工厂 

interface CreateFactory(){

    function createDB(); //分为 内敛的和外向的

}


class FactoryMysql implements CreateFactory{
    function createDB() {
        return  new  MysqlDb();
    }
}


class FactoryOracle implements CreateFactory{
    function createDB() {
        return  new  OracalDb();
    }
}




(1) 如果想使用mysql

$db = new FactoryMysql()->createDB();   //

Das Obige hat das abstrakte Factory-Muster in PHP vorgestellt, einschließlich seiner Aspekte. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.

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
Vorheriger Artikel:PHP ReflectionClassNächster Artikel:PHP ReflectionClass