您的位置:首页 > 编程语言 > PHP开发

php设计模式之工厂模式

2015-05-08 19:05 639 查看

工厂模式:

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

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

通俗的说,以前创建一个对象要使用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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: