PHP-Designmuster, einfaches Factory-Muster

齐天大圣
Freigeben: 2023-04-09 11:58:01
Original
1858 Leute haben es durchsucht

Musik hören

Zu den gängigen Musikplayern, die derzeit auf dem Markt sind, gehören QQ Music, NetEase Cloud Music, Kugou Music, Kuwo Music usw.

PHP-Designmuster, einfaches Factory-Muster

Verschiedene Menschen verwenden möglicherweise unterschiedliche Player, um Musik zu hören. Wir können einen der Musikplayer auswählen, um Musik zu hören. Bitte sehen Sie sich den folgenden Code an:

if ($type == 1) {
    $player = new QQPlayer();
} else if ($type == 2) {
    $player = new WyPlayer();
} else if ($type == 3) {
    $player = new KGPlayer();
}

$player->on();  // 打开播放器
$player->choiceMusic('思念是一种病');  // 选择歌曲
$player->play();  // 开始播放
Nach dem Login kopieren

Wenn wir zu diesem Zeitpunkt Kuwo Music Player hinzufügen möchten oder glauben, dass wir NetEase Cloud Music entfernen können (kann nicht angehört werden). it) Jay Chous Lied), dann muss das Programm geändert werden (der bedingte Zweig muss geändert werden). Daher ist ein solcher Code schwierig zu warten.

Ein Prinzip beim Schreiben von Programmen besteht darin, Änderungen zu extrahieren und zu kapseln. Wir extrahieren den bedingten Zweig und kapseln ihn in eine neue Klasse.

Einfacher Engineering-Modus

Definition: Definieren Sie eine Factory-Klasse, die Instanzen verschiedener Klassen basierend auf unterschiedlichen Parametern zurückgeben kann Instanzen haben normalerweise eine gemeinsame übergeordnete Klasse

Im einfachen Factory-Muster ist die zum Erstellen der Instanz verwendete Methode normalerweise eine statische Methode, daher wird das einfache Factory-Muster auch statische Factory-Methode< genannt 🎜>

Als nächstes erstellen wir einen einfachen Engineering-Modus mit dem folgenden Code:

class SimpleFactory
{
    public static function createMusicPlayer ($type)
    {
        if ($type == 1) {
            $player = new QQPlayer();
        } else if ($type == 2) {
            $player = new WyPlayer();
        } else if ($type == 3) {
            $player = new KGPlayer();
        } else {
            return null;
        }
        return $player;
    }
}
Nach dem Login kopieren

Dann kann der Code am Anfang des Artikels wie folgt geändert werden:

$player  = SimpleFactory::createMusicPlayer($type);

$player->on();  // 打开播放器
$player->choiceMusic(&#39;思念是一种病&#39;);  // 选择歌曲
$player->play();  // 开始播放
Nach dem Login kopieren

Vielleicht haben Sie Fragen, welchen Nutzen hat das? Es scheint, dass das Problem einfach von einem Ort zum anderen verlagert wird.

Denken Sie darüber nach, wir hören vielleicht morgens oder abends Musik, oder wenn dieser Player nicht die Musik hat, die wir hören möchten, müssen wir zu einem anderen Player wechseln. Dann ist es möglich, an mehreren Stellen neue Musikplayer zu erstellen. Daher ist es besser, diesen Code an einer Stelle abzulegen als an mehreren Stellen. Wenn er geändert werden muss, muss er sich nur an einer Stelle befinden. Wenn Sie diese Methode beibehalten, müssen Sie nur createMusicPlayer in der einfachen Factory-Musterklasse ändern.

Das obige ist der detaillierte Inhalt vonPHP-Designmuster, einfaches Factory-Muster. 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