PHP Design Patterns: Einführung in PHP Factory Pattern (mit Code)

不言
Freigeben: 2023-04-03 15:54:01
Original
1882 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit PHP-Designmustern: Eine Einführung in das PHP-Factory-Muster (mit Code). Es hat einen gewissen Referenzwert. Ich hoffe, es wird für Sie hilfreich sein.

Factory-Muster ist eine Methode, die die Instanziierungsdetails einer Klasse verbirgt und dieselbe Instanziierungsmethode für eine Reihe von Klassen verwendet, wodurch die Möglichkeit zum Erstellen von Objekten für weitere Klassen, die dieselbe Schnittstelle implementieren, problemlos erweitert werden kann.
Beispielhafte Anwendungsszenarien sind:
1) Online-Zahlung
Es gibt viele Zahlungsmethoden, wie z. B. WeChat-Zahlung, Alipay-Zahlung, UnionPay-Zahlung usw. Die entsprechende Zahlungsmethode wird je nach Wahl des Benutzers übernommen
2) Besuchsstatistiken
In einem Projekt mit einem komplexeren Unternehmen greifen Benutzer auf verschiedene Objekte zu, z. B. auf Artikel, auf Autoren, auf Artikelverzeichnisse usw. Es handelt sich um denselben Zugriffsdatensatz, aber die aufgezeichneten Informationen sind unterschiedlich

Das Prinzip des Factory-Musters:
Entwerfen Sie zunächst eine Schnittstelle basierend auf dem gleichen Verhalten mehrerer Objekte, lassen Sie dann diese Klassen diese Schnittstelle implementieren und erstellen Sie dann eine Instanziierungsfabrik, die entsprechend instanziiert werden kann unterschiedliche Parameter im Werk. Verschiedene Typen.

Spezifische Implementierung des Factory-Musters:

/*
 *  形状接口
 */interface Shape{
    public function area();}/*
 * 长方形类,实现了形状接口
 */class Rectangle implements Shape{
    private $long;    private $width;    function __construct($long,$width)
    {
        $this->long = $long;        $this->width = $width;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return $this->long * $this->width;
    }
}/*
 * 正方形类,实现了形状接口
 */class Square implements Shape{
    private $width;    function __construct($width)
    {
        $this->width = $width;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return pow($this->width,2);
    }
}/*
 * 圆形类,实现了形状接口
 */class Circle implements Shape{
    private $radiu;    function __construct($radiu)
    {
        $this->radiu = $radiu;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return pi()*pow($this->radiu,2);
    }
}class ShapeFactory{
    /*
     * 获取实例化的形状对象
     * ...$args 表示接受不限个数的参数
     */
    public function getShpae(...$args)
    {
        /*
         * 第一个参数为形状名,后面的参数为形状的尺寸
         */
        switch($args[0])
        {            case 'Rectangle':                return new Rectangle($args[1],$args[2]);            break;            case 'Square':                return new Square($args[1]);            break;            case 'Circle':                return new Circle($args[1]);            break;
        }        return null;
    }
}$factory = new ShapeFactory();$shape = $factory->getShpae('Rectangle',2,3);$area[] = $shape->area();$shape = $factory->getShpae('Square',2);$area[] = $shape->area();$shape = $factory->getShpae('Circle',2);$area[] = $shape->area();
print_r($area);/*
Array
(
    [0] => 6
    [1] => 4
    [2] => 12.566370614359
)
*/
Nach dem Login kopieren

Empfohlene verwandte Artikel:

So erhalten Sie das Dateiverzeichnis der ersten Ebene in PHP (reiner Code)

So berechnen Sie mit PHP den Abstand zwischen zwei Punkten mithilfe von Längen- und Breitengrad (reiner Code)

Das obige ist der detaillierte Inhalt vonPHP Design Patterns: Einführung in PHP Factory Pattern (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage