山西坦达清洁设备有限公司

现在的位置: 主页 > 企业简介 > 文章列表

文章正文

php设计模式之工厂模式

作者:山西坦达清洁设备有限公司 来源:www.sxtdqj.com 发布时间:2017-09-09 10:20:11
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
";

}

   publicfunction connect() {

}

   publicfunctionexec() {

}

}

class PostgreDB implements DB

{

   publicfunction __construct() {

   echo"Postgre db
";

}

   publicfunction connect() {

   }

   publicfunctionexec() {

}

}

class MssqlDB implements DB

{

   publicfunction __construct() {

   echo"mssql db
";

}

   publicfunction connect() {

}

   publicfunctionexec() {

}

}

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

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

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


企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网页设计 https://www.feimao666.com


COPYRIGHT © 2015 山西坦达清洁设备有限公司 ALL RIGHTS RESERVED.
网站地图 技术支持:肥猫科技
精彩专题:网站建设
购买本站友情链接、项目合作请联系客服QQ:2500-38-100