Heim > Backend-Entwicklung > PHP-Tutorial > Was ist der Proxy-Modus? (Beispielbeschreibung)

Was ist der Proxy-Modus? (Beispielbeschreibung)

藏色散人
Freigeben: 2023-04-05 20:52:01
nach vorne
4621 Leute haben es durchsucht

Proxy-Modus

Die Rolle des Proxy-Modus ähnelt der von Vererbung, Schnittstelle und Kombination. Beide dienen dazu, gemeinsame Teile zu aggregieren und den Code zu reduzieren gemeinsame Teile.

Der Unterschied besteht darin, dass ihre Kontexte im Vergleich zur Vererbung unterschiedlich sind. Die Bedeutung, die die Vererbung ausdrücken möchte, ist „is-a“, während die Bedeutung, die der Proxy ausdrücken möchte, näher an der Schnittstelle liegt, die „has-a“ ist , und wenn Sie einen Proxy verwenden Als Antwort auf den Satz „Verwenden Sie weniger Vererbung und mehr Kombinationen“ besteht die Bedeutung tatsächlich darin, den Kopplungsgrad zu verringern.

Für die Kombination ist es flexibler als für die Kombination. Wenn wir beispielsweise das Proxy-Objekt auf privat setzen, kann ich wählen, nur einen Teil der Proxy-Funktion bereitzustellen, z. B. eine oder zwei Methoden zum Drucken. und Oder Sie können einige andere Vorgänge hinzufügen, wenn Sie Druckerfunktionen bereitstellen. Diese sind alle möglich.

<?php
//代理对象,一台打印机
class Printer { 
    public function printSth() {
        echo &#39;我可以打印<br>&#39;;
    }
}
//这是一个文印处理店,只文印,卖纸,不照相
class TextShop {
    private $printer;
    public function __construct(Printer $printer) {
        $this->printer = $printer;
    }
    //卖纸
    public function sellPaper() {
        echo &#39;give you some paper <br>&#39;;
    }
    //将代理对象有的功能交给代理对象处理
    public function __call($method, $args) {
        if(method_exists($this->printer, $method)) {
            $this->printer->$method($args);
        }
    }
}
//这是一个照相店,只文印,拍照,不卖纸
class PhotoShop {    
    private $printer;
    
    public function __construct(Printer $printer) {
        $this->printer = $printer;
    }
    
    public function takePhotos() {    //照相
        echo &#39;take photos for you <br>&#39;;
    }
    
    public function __call($method, $args) {    //将代理对象有的功能交给代理对象处理
        if(method_exists($this->printer, $method)) {
            $this->printer->$method($args);
        }
    }
}
$printer = new Printer();
$textShop = new TextShop($printer);
$photoShop = new PhotoShop($printer);
$textShop->printSth();
$photoShop->printSth();
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas ist der Proxy-Modus? (Beispielbeschreibung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:hcoder.net
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