>  기사  >  백엔드 개발  >  PHP 팩토리 패턴의 세 가지 형태의 샘플 코드에 대한 자세한 설명

PHP 팩토리 패턴의 세 가지 형태의 샘플 코드에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-18 14:39:013311검색

PHP팩토리 패턴3가지 형태의 샘플 코드에 대한 자세한 설명

<?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();
	}
}

관련 기사:

간단한 분석 PHP 팩토리 패턴

PHP 팩토리 모드 사용에 대한 간단한 지침

PHP 팩토리 모드의 이점 분석

위 내용은 PHP 팩토리 패턴의 세 가지 형태의 샘플 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.