工厂模式就是一种类,具有为您创建对象的某些方法,这样就可以使用工厂类创建对象,而不直接使用new。这样如果想更改创建的对象类型,只需更改该工厂即可。
class Factory {
static public function fac ($id ) {
if (1 == $id ) return new A();
elseif (2 ==$id ) return new B();
elseif (3 ==$id ) return new C();
return new D();
}
}
interface FetchName {
public function getname () ;
}
class A implements FetchName {
private $name = "AAAAA" ;
public function getname () { return $this ->name; }
}
class C implements FetchName {
private $name = "CCCCC" ;
public function getname () { return $this ->name; }
}
class B implements FetchName {
private $name = "BBBBB" ;
public function getname () { return $this ->name; }
}
class D implements FetchName {
private $name = "DDDDD" ;
public function getname () { return $this ->name; }
}
$o = Factory::fac(6 );
if ($o instanceof FetchName){
echo $o ->getname();
}
$p =Factory::fac(3 );
echo $p ->getname();
https: