工厂模式

来源:互联网 发布:书法边框软件 编辑:程序博客网 时间:2024/06/06 17:40

工厂模式就是一种类,具有为您创建对象的某些方法,这样就可以使用工厂类创建对象,而不直接使用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();//DDDDD}$p=Factory::fac(3);echo $p->getname();//CCCCChttps://www.ibm.com/developerworks/cn/opensource/os-php-designptrns/