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");
相关文章推荐
- php 设计模式之工厂模式
- PHP设计模式之工厂模式
- php设计模式之简单工厂
- 个人对于PHP设计模式之工厂模式的理解
- PHP设计模式:简单工厂
- PHP设计模式漫谈之工厂模式
- PHP设计模式之工厂模式(FactoryMethod)
- PHP设计模式-工厂设计模式
- php设计模式-单例模式-工厂模式
- php设计模式之工厂模式
- PHP设计模式-工厂系列(三)-抽象工厂模式
- PHP设计模式之工厂/单例/注册者模式
- php 设计模式之 工厂模式
- php设计模式-工厂模式
- php设计模式之简单工厂模式
- Php设计模式之工厂模式(一)简单工厂模式
- php中使用接口实现工厂设计模式的代码
- php设计模式之抽象工厂
- php设计模式之工厂模式
- php设计模式——工厂方法设计模式