码迷,mamicode.com
首页 > Web开发 > 详细

php设计模式之工厂模式

时间:2015-05-08 22:12:04      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:工厂模式   php   

工厂模式:

 

工厂模式的最大优点在于创建对象上面,就是把创建对象的过程封装起来,这样随时可以产生一个新的对象。

 

减少代码进行复制粘帖,耦合关系重,牵一发动其他部分代码。

通俗的说,以前创建一个对象要使用new,现在把这个过程封装起来了。

假设不使用工厂模式:那么很多地方调用类a,代码就会这样子创建一个实例:new a(),假设某天需要把a类的名称修改,意味着很多调用的代码都要修改。

建立一个工厂(一个函数或一个类方法)来制造新的对象,它的任务就是把对象的创建过程都封装起来,

创建对象不是使用new的形式了。而是定义一个方法,用于创建对象实例。

    工厂方法:

比如你的工厂叫做“香烟工厂”,那么可以有“七匹狼工厂”“中华工厂”等,但是,这个工厂只生厂一种商品:香烟;

 

抽象工厂:无法描述它到底生产什么产品,它生产很多类型的产品(所以抽象工厂就会生成子工厂)

 

你的工厂是综合型的,是生产“一系列”产品,而不是“一个”,比如:生产“香烟”,还有“啤酒”等。然后它也可以有派生出来的具体的工厂,但这些工厂都是生产这一系列产 品,只是可能因为地域不一样,为了适应当地人口味,味道也不太一样。

 

工厂模式:理解成只生成一种产品的工厂。比如生产香烟的。

 

工厂方法:工厂的一种产品生产线 。比如键盘的生成过程。

 

< php

/**

 * 工厂方法模式

 *

 * 定义一个用于创建对象的接口,让子类决定将哪一个类实例化,使用一个类的实例化延迟到其子类

*/

 

/*

class DBFactory

{

    public static function create($type)

    {

        swtich($type)

        {

            case "Mysql":

                return new MysqlDB(); break;

            case "Postgre":

                return new PostgreDB(); break;

            case "Mssql":

                return new MssqlDB(); break;

        }

    }

}

*/

class DBFactory

{

   publicstaticfunction create($type)

    {

   $class=$type."DB";

   returnnew$class;

    }

}

 

interface DB

{

   publicfunction connect();

   publicfunctionexec();

}

 

class MysqlDB implements DB

{

   publicfunction __construct() {

   echo"mysql db<br/>";

    }

 

   publicfunction connect() {

    }

 

   publicfunctionexec() {

    }

}

 

class PostgreDB implements DB

{

   publicfunction __construct() {

   echo"Postgre db<br/>";

    }

 

   publicfunction connect() {

   }

 

   publicfunctionexec() {

     } 

 

class MssqlDB implements DB

{

   publicfunction __construct() {

   echo"mssql db<br/>";

    }

 

   publicfunction connect() {

    }

   publicfunctionexec() {

    }

}

 

 

$oMysql= DBFactory::create("Mysql");

$oPostgre= DBFactory::create("Postgre");

$oMssql= DBFactory::create("Mssql");


php设计模式之工厂模式

标签:工厂模式   php   

原文地址:http://blog.csdn.net/demon0313/article/details/45583903

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!