Heim > Backend-Entwicklung > PHP-Tutorial > Objektorientierte PHP-Entwicklung – abstraktes Factory-Muster

Objektorientierte PHP-Entwicklung – abstraktes Factory-Muster

黄舟
Freigeben: 2023-03-04 12:34:01
Original
2127 Leute haben es durchsucht

Abstraktes Fabrikmuster ist eine Abstraktion des Fabrikmusters Laienhaft ausgedrückt unterteilt es die Struktur des Fabrikmusters in einzelne Personen, die unabhängig voneinander ausgeführt werden können.

Nehmen wir ein Beispiel aus dem Fabrikmodell:

Jetzt gibt es eine Autofabrik, die Autos und Busse aus Motoren, Karosserien und Rädern herstellt.

Im Fabrikmodell betrachten wir Autos und Busse als zwei Kategorien in der Automobilfamilie. Die Produktion von Motoren, Karosserien und Rädern sind die festen Strukturen für die Produktion von Autos, wie in der folgenden Abbildung dargestellt: Objektorientierte PHP-Entwicklung – abstraktes Factory-Muster

Im abstrakten Fabrikmodell werden der Produktionsmotor, die Karosserie und die Räder separat abstrahiert, wie in der folgenden Abbildung dargestellt:

Objektorientierte PHP-Entwicklung – abstraktes Factory-Muster

Die tatsächliche Bereitstellung ist:

//生产引擎的标准
interface engineNorms{
	function engine();
}

class carEngine implements engineNorms{

	public function engine(){
		return '汽车引擎';
	}

}

class busEngine implements engineNorms{
	
	public function engine(){
		return '巴士车引擎';
	}
	
}

//生产车身的标准
interface bodyNorms{
	function body();
}

class carBody implements bodyNorms{

	public function body(){
		return '汽车车身';
	}

}

class busBody implements bodyNorms{
	
	public function body(){
		return '巴士车车身';
	}
	
}

//生产车轮的标准
interface whellNorms{
	function whell();
}

class carWhell implements whellNorms{

	public function whell(){
		return '汽车轮子';
	}

}

class busWhell implements whellNorms{
	
	public function whell(){
		return '巴士车轮子';
	}
	
}
Nach dem Login kopieren

Abstrahieren Sie weiterhin die Fabrik, abstrahieren Sie die Autofabrik und die Busfabrik und verknüpfen Sie jede Fabrik mit jeder Komponente, wie in der Abbildung gezeigt:

Objektorientierte PHP-Entwicklung – abstraktes Factory-MusterDie tatsächliche Bereitstellung ist:

Die tatsächliche Bereitstellung ist:

//生产引擎的标准
interface engineNorms{
	function engine();
}

class carEngine implements engineNorms{

	public function engine(){
		return '汽车引擎';
	}

}

class busEngine implements engineNorms{
	
	public function engine(){
		return '巴士车引擎';
	}
	
}

//生产车身的标准
interface bodyNorms{
	function body();
}

class carBody implements bodyNorms{

	public function body(){
		return '汽车车身';
	}

}

class busBody implements bodyNorms{
	
	public function body(){
		return '巴士车车身';
	}
	
}

//生产车轮的标准
interface whellNorms{
	function whell();
}

class carWhell implements whellNorms{

	public function whell(){
		return '汽车轮子';
	}

}

class busWhell implements whellNorms{
	
	public function whell(){
		return '巴士车轮子';
	}
	
}

//工厂标准
interface factory {
static public function getInstance($type);
}

//汽车工厂
class carFactory implements factory{

static public function getInstance($type){
$instance='';
switch($type){
case 'engine':
$instance=new carEngine();
break;
case 'body':
$instance=new carBody();
break;
case 'whell':
$instance=new carWhell();
break;
default:
throw new Exception('汽车工厂无法生产这种产品');
}
return $instance;
}

}

//巴士车工厂
class busFactory implements factory{

static public function getInstance($type){
$instance='';
switch($type){
case 'engine':
$instance=new busEngine();
break;
case 'body':
$instance=new busBody();
break;
case 'whell':
$instance=new busWhell();
break;
default:
throw new Exception('巴士车工厂无法生产这种产品');
}
return $instance;
}

}

$car['engine']=carFactory::getInstance('engine')->engine();
$car['body']=carFactory::getInstance('body')->body();
$car['whell']=carFactory::getInstance('whell')->whell();
print_r($car);

$bus['engine']=busFactory::getInstance('engine')->engine();
$bus['body']=busFactory::getInstance('body')->body();
$bus['whell']=busFactory::getInstance('whell')->whell();
print_r($bus);
Nach dem Login kopieren

Das abstrakte Fabrikmuster abstrahiert das Fabrikmuster, wodurch die abstrahierte neue Struktur flexibler werden kann. Wenn beispielsweise die Produktion einer Autokarosserie einen Lackiervorgang erfordert, müssen wir im Fabrikmodus die Gesamtstruktur ändern, in der abstrakten Fabrik müssen wir jedoch nur die Produktionskarosserie ändern.

Das abstrakte Fabrikmuster hat auch den Nachteil, dass das Fabrikmuster hohe strukturelle Anforderungen stellt. Die Erweiterung oder Straffung der Gesamtstruktur wird komplizierter, sodass bei Verwendung des abstrakten Fabrikmusters die Aufteilung der hierarchischen Struktur erfolgt ist sehr wichtig.

Das Obige ist der Inhalt der objektorientierten PHP-Entwicklung – abstraktes Fabrikmuster. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).

Verwandte Artikel:

Detaillierte Erläuterung des spezifischen Codes zur Implementierung des abstrakten Fabrikmusters in Java

Abstraktes Fabrikmuster des JAVA-Entwurfsmusters

Vergleich des einfachen PHP-Fabrikmusters, des Fabrikmethodenmusters und des abstrakten Fabrikmusters

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