1. 简单工厂模式:
简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。
~~~
/**
* 简单工厂模式与工厂方法模式比较。
* 简单工厂又叫静态工厂方法模式,这样理解可以确定,简单工厂模式是通过一个静态方法创建对象的。
*/
abstract class Fruit{
private $name;
// Force Extending class to define this method
abstract protected function getName();
abstract protected function setName($name);
// Common method
public function printName() {
print $this->getName() . "\n";
}
}
class Apple extends Fruit{
function __construct(){
$this->name = "Apple";
}
}
class Banana extends Fruit{
function __construct(){
$this->name = "Banana";
}
}
/*
class Factory{
static function createFruit($classname){
return new $classname();
}
}
*/
class Factory{
static function createFruit($classname){
if($classname == "Apple"){
return new Apple();
}else if($classname == "Banana"){
return new Banana();
}
return null;
}
}
//测试
Factory::createFruit("Apple");
Factory::createFruit("Banana");
~~~