PHP工厂模式是我们最常用的实例化对象模式,这里分享一下 PHP 工厂模式的三种形式的示例代码详解:
// 简单工厂模式
interface ICar {
function run();
}
class BMWCar implements ICar {
public function run() {
echo 'bmw run!
';
}
}
class AuDiCar implements ICar {
public function run() {
echo 'audi run!
';
}
}
/**
* 简单工厂
*/
class FactorySimple {
/*
public static function createBmw() {
return new BMWCar();
}
public static function createAudi() {
return new AuDiCar();
}
*/
public static function createCar($type) {
switch($type) {
case 'bmw':
return new BMWCar();
case 'audi':
return new AuDiCar();
default:
throw new Exception('type error!');
}
}
}
// ------------------------------------------------------
// ------------------------------------------------------
// 工厂方法模式
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 'white bmwcar run!
';
}
}
class BlackBMWCar implements ICar {
public function run() {
echo 'black bmwcar run!
';
}
}
class WhiteAuDiCar implements ICar {
public function run() {
echo 'white audicar run!
';
}
}
class BlackAuDiCar implements ICar {
public function run() {
echo 'black audicar run!
';
}
}
// 提供一系列的接口
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();
}
}
女程序员博客 , 版权所有丨本站采用BY-NC-SA协议进行授权 , 转载请注明PHP 工厂模式示例代码详解!
【声明】:本博客仅为分享信息,不参与任何交易,也非中介,所有内容仅代表个人观点,均不作直接、间接、法定、约定的保证,读者购买风险自担。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。
【关于安全】:任何 IDC 都有倒闭和跑路的可能,备份永远是最佳选择,服务器也是机器,不勤备份是对自己极不负责的表现,请保持良好的备份习惯。