Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-objektorientierte erweiterte Entwurfsmuster: Beispiele für die Verwendung von Darstellungsmustern

PHP-objektorientierte erweiterte Entwurfsmuster: Beispiele für die Verwendung von Darstellungsmustern

巴扎黑
巴扎黑Original
2017-05-22 14:06:401776Durchsuche

Was ist der Darstellungsmodus?

Das Fassadenentwurfsmuster verbirgt die Komplexität vor dem aufrufenden Objekt, indem es eine Fassadenschnittstelle vor einer Sammlung notwendiger Logik und Methoden erstellt.

Warum das Facade-Muster verwenden:

Der Grund für die Verwendung von Facade-basierten Objekten ist die Schnittstelle zu Lösungen von Drittanbietern. Es ist wichtig, sich daran zu erinnern, dass wir ständig betonen, dass es bei objektorientierten Projekten um eine Sammlung verwandter Objekte gehen sollte. Angesichts dieser Architektur könnte es für den leitenden Programmierer sinnvoller sein, Objekte von Drittanbietern zu verwenden.

Angenommen, Sie möchten eine Suchwebseite für eine Anwendung bereitstellen. Die Seite findet zunächst alle Daten, die zum Suchbegriff selbst passen. Wenn die Anzahl der Ergebnisse weniger als 10 beträgt, wird ein Drittanbieterdienst aufgerufen, um zusätzliche Ergebnisse abzurufen, die am Ende der von der Anwendung intern gefundenen Ergebnisse hinzugefügt werden. Das Suchdarstellungsobjekt gibt die Ergebnisse an das aufrufende Ansichtsobjekt zurück. Intern ruft das Search-Fassadenobjekt Methoden auf, die die interne Datenbank abfragen. Anschließend wird ermittelt, ob Google über einen Webdienst aufgerufen werden muss. Bei Bedarf werden auch alle Ergebnisse analysiert, um eine homogene Ergebnismenge zu erhalten.

Um die komplexen Methoden und logischen Gruppen zu verbergen, die zum Ausführen eines bestimmten Schritts des Geschäftsprozesses erforderlich sind, sollten Klassen verwendet werden, die auf dem Erscheinungsbild-Designmuster basieren.

UML

Dieses UML-Diagramm beschreibt detailliert einen Klassenentwurf unter Verwendung des Fassadenentwurfsmusters.

PHP-objektorientierte erweiterte Entwurfsmuster: Beispiele für die Verwendung von Darstellungsmustern

Das Folgende ist eine Beschreibung des obigen Bildes:

1 Die MyObject-Klasse enthält eine öffentliche Methode namens doSomethingRequiresAandB(). , Diese Methode ist nur ein Schritt in der Ausführung der MyObject-Klasse. Die Methode doSomethingRequiresAandB() erstellt eine neue Instanz des Objekts LogicFacade, das eine öffentliche Methode namens callRequiredLogic() aufruft, die abstrakt genug für MyObject ist.

2. Die callRequiredLogic()-Methode innerhalb der LogicFacade-Klasse ist dann für die Erstellung einer Instanz von LogicObjectA und den Aufruf der doSomethingA()-Methode verantwortlich. Sie ist auch für die Erstellung einer Instanz von LogicObjectB und den Aufruf von doSomethingB() verantwortlich. Verfahren.

3. Alle oben genannten Aktionen werden über die LogicFacade-Klasse zurückgegeben, damit sie von MyObject verwendet werden können.


Verwenden Sie Beispielcode, um Folgendes anzuzeigen:

header("Content-type:text/html;Charset=utf-8");

//子系统角色
class SubSystemOne{
   function mothedOne(){
       echo "方法一<br>";
   }
}
class SubSystemTwo{
   function mothedTwo(){
       echo "方法二<br>";
   }
}
class SubSystemThree{
   function mothedThree(){
       echo "方法三<br>";
   }
}

//外观角色
class Facade{
    private $subSystemOne = null;
    private $subSystemTwo = null;
    private $subSystemThree =null;

    function __construct(){
        $this->subSystemOne =new SubSystemOne();
        $this->subSystemTwo =new SubSystemTwo();
        $this->subSystemThree =new SubSystemThree();
    }

    function mothedA(){
        $this->subSystemOne->mothedOne();
    }
    function mothedB(){
        $this->subSystemTwo->mothedTwo();
    }
    function mothedC(){
        $this->subSystemThree->mothedThree();
    }
    function mothedD(){
        $this->subSystemOne->mothedOne();
        $this->subSystemTwo->mothedTwo();
        $this->subSystemThree->mothedThree();
    }
}

//测试
$facade = new Facade();
$facade->mothedA();
$facade->mothedB();
$facade->mothedC();
$facade->mothedD();


Das obige ist der detaillierte Inhalt vonPHP-objektorientierte erweiterte Entwurfsmuster: Beispiele für die Verwendung von Darstellungsmustern. 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