Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erläuterung der drei Formen des Beispielcodes des PHP-Factory-Musters

Detaillierte Erläuterung der drei Formen des Beispielcodes des PHP-Factory-Musters

黄舟
黄舟Original
2017-03-18 14:39:013364Durchsuche

PHPFabrikmusterDetaillierte Erläuterung der drei Formen von Beispielcode

<?php
// 简单工厂模式
interface ICar {
	function run();
}

class BMWCar implements ICar {
	
	public function run() {
		echo &#39;bmw run!<br/>&#39;;
	}
}

class AuDiCar implements ICar {
	
	public function run() {
		echo &#39;audi run!<br/>&#39;;
	}
}

/**
 * 简单工厂
 */
class FactorySimple {
	
	/*
	public static function createBmw() {
		return new BMWCar();
	}
	
	public static function createAudi() {
		return new AuDiCar();
	}
	*/
	
	public static function createCar($type) {
		switch($type) {
			case &#39;bmw&#39;:
				return new BMWCar();
			case &#39;audi&#39;:
				return new AuDiCar();
			default:
				throw new Exception(&#39;type error!&#39;);
		}
	}
}


// ------------------------------------------------------
// ------------------------------------------------------

// 工厂方法模式
interface CreateCar { //工厂类接口
	function create();
}

/**
 * bmw car factoyr
 */
class BmwFactory implements CreateCar {
	
	public function create() {
		return new BMWCar();
	}
}

/**
 * audi car factory
 */
class AuDiFactory implements CreateCar {
	
	public function create() {
		return new AuDiCar();
	}
}

// ------------------------------------------------------
// ------------------------------------------------------

// 抽象工厂模式

class WhiteBMWCar implements ICar {
	
	public function run() {
		echo &#39;white bmwcar run!<br/>&#39;;
	}
}

class BlackBMWCar implements ICar {
	
	public function run() {
		echo &#39;black bmwcar run!<br/>&#39;;
	}
}

class WhiteAuDiCar implements ICar {
	
	public function run() {
		echo &#39;white audicar run!<br/>&#39;;
	}
}

class BlackAuDiCar implements ICar {
	
	public function run() {
		echo &#39;black audicar run!<br/>&#39;;
	}
}

// 提供一系列的接口
interface ICarCreate {
	function createBmw();
	function createAuDi();
}

/**
 * create white car
 */
class WhiteCarFactory implements ICarCreate {
	
	// white bmw
	public function createBmw() {
		return new WhiteBMWCar();
	}
	
	// white audi
	public function createAuDi() {
		return new WhiteAuDiCar();
	}
}

/**
 * create black car
 */
class BlackCarFactory implements ICarCreate {
	
	// black bmw
	public function createBmw() {
		return new BlackBMWCar();
	}
	
	// black audi
	public function createAuDi() {
		return new BlackAuDiCar();
	}
}

Verwandte Artikel:

Eine kurze Beschreibung Analyse des PHP-Factory-Musters

Einfache Anweisungen zur Verwendung des PHP-Factory-Musters

Analyse der Vorteile des PHP-Factory-Musters

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der drei Formen des Beispielcodes des PHP-Factory-Musters. 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