PHP面向对象深入理解之四(设计模式-工厂模式)
2017-08-06 17:54
1066 查看
适用于创建相同类型的模型类 能使代码更加健壮
举个栗子:车Car --> 奥迪,福特,宝马... 我们要造一辆
重要的是我们不需要引入所有相关类,我们只需要引入一个工厂类 即可
interface Car
{
public function makeCircle();
public function makeBody();
public function makeEngine();
public function makeDecoration();
}
class Audi
{
public function makeCircle()
{
echo 'make Audi Circle';
}
public function makeBody()
{
echo 'make Audi Body';
}
public function makeEngine()
{
echo 'make Audi Engine';
}
public function makeDecoration()
{
echo 'make Audi Decoration';
}
public function makeAuto()
{
}
}
class Ford
{
public function makeCircle()
{
echo 'make Audi Circle';
}
public function makeBody()
{
echo 'make Audi Body';
}
public function makeEngine()
{
echo 'make Audi Engine';
}
public function makeDecoration()
{
echo 'make Audi Decoration';
}
public function makeHandle()
{
}
}
class BMW
{
public function makeCircle()
{
echo 'make BMW Circle';
}
public function makeBody()
{
echo 'make BMW Body';
}
public function makeEngine()
{
echo 'make BMW Engine';
}
public function makeDecoration()
{
echo 'make BMW Decoration';
}
public function makeAll()
{
}
}
class CarFactory
{
static public function create($class,$params)
{
if(!class_exists($class)){
throw new Exception("class not existis!");
}
return new $class($params);
}
}
$audi = CarFactory::create('Audi',’15w‘);
$audi->makeCircle();
$bmw = CarFactory::create('BMW',’100w‘);
$bmw->makeAll();
举个栗子:车Car --> 奥迪,福特,宝马... 我们要造一辆
重要的是我们不需要引入所有相关类,我们只需要引入一个工厂类 即可
interface Car
{
public function makeCircle();
public function makeBody();
public function makeEngine();
public function makeDecoration();
}
class Audi
{
public function makeCircle()
{
echo 'make Audi Circle';
}
public function makeBody()
{
echo 'make Audi Body';
}
public function makeEngine()
{
echo 'make Audi Engine';
}
public function makeDecoration()
{
echo 'make Audi Decoration';
}
public function makeAuto()
{
}
}
class Ford
{
public function makeCircle()
{
echo 'make Audi Circle';
}
public function makeBody()
{
echo 'make Audi Body';
}
public function makeEngine()
{
echo 'make Audi Engine';
}
public function makeDecoration()
{
echo 'make Audi Decoration';
}
public function makeHandle()
{
}
}
class BMW
{
public function makeCircle()
{
echo 'make BMW Circle';
}
public function makeBody()
{
echo 'make BMW Body';
}
public function makeEngine()
{
echo 'make BMW Engine';
}
public function makeDecoration()
{
echo 'make BMW Decoration';
}
public function makeAll()
{
}
}
class CarFactory
{
static public function create($class,$params)
{
if(!class_exists($class)){
throw new Exception("class not existis!");
}
return new $class($params);
}
}
$audi = CarFactory::create('Audi',’15w‘);
$audi->makeCircle();
$bmw = CarFactory::create('BMW',’100w‘);
$bmw->makeAll();
相关文章推荐
- PHP面向对象深入理解之四(设计模式-单例模式)
- PHP面向对象深入理解之四(设计模式-观察者模式)
- php部分---面向对象,设计模式(单例模式、工厂模式)、oop六大原则;
- 深入PHP面向对象、模式与实践——设计模式
- 深入PHP面向对象、模式与实践——对象与设计
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 设计模式之单一模式
- 深入php面向对象、模式与实践
- 深入PHP面向对象、模式与实践——生成对象(2)
- PHP面向对象之旅:深入理解static变量与方法
- 深入PHP面向对象、模式与实践——执行及描述任务(1)
- 深入PHP面向对象、模式与实践——生成对象(1)
- PHP面向对象深入理解之五(内省函数与反射类)
- PHP面向对象深入研究之【组合模式与装饰模式】
- 深入PHP面向对象、模式与实践——高级特性(5)
- 深入PHP面向对象、模式与实践——高级特性(6)
- 深入PHP面向对象、模式与实践——企业模式(2)
- 深入php面向对象、模式与实践
- PHP面向对象深入理解之三(类中的魔术方法)
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 设计模式之工厂模式
- 深入PHP面向对象、模式与实践——模式原则(1)