PHP设计模式之工厂模式详解

    工厂模式:说白了就是使用统一方法(工厂方法)来实例化对象,我们定义一个专门用来创建其它对象的类。 这样在需要调用某个类的时候,我们就不需要去使用new关键字实例化这个类,而是通过我们的工厂类调用某个方法得到类的实例。

    工厂模式通常用来返回符合类似接口的不同的类,工厂的一种常见用法就是创建多态的提供者,从而允许我们基于应用程序逻辑或者配置设置来决定应实例化哪一个类,例如,可以使用这样的提供者来扩展一个类,而不需要重构应用程序的其他部分,从而使用新的扩展后的名称 。

     通常,工厂模式有一个关键的构造,根据一般原则命名为Factory的静态方法,然而这只是一种原则,工厂方法可以任意命名,这个静态还可以接受任意数据的参数,必须返回一个对象。

    当我们对象所对应的类的类名发生变化的时候,我们只需要改一下工厂类类里面的实例化方法即可。不需要外部改所有的地方,如果是更改参数,那么又得另外一种说法了。

下面我们看代码:

index.php                       //单一入口
<?php
$a=Database::getInstance();    //直接调用数据库静态化方法
$db=Factory::createDatabase();  //使用工厂模式,来实例化数据库

Database.php                    //数据库类
<?php
class Database
{
	static protected $db;
	private function __construct()
	{
	}
	static function getInstance()
	{
		if(self::$db){
			return slef::$db;
		}else{
			self::$db=new self();
			return self::$db;
		}
	}
}

Factory.php              /工厂模式类
<?php
namespace IMooc;
class Factory
{
	static function createDatabase()
	{
		$db=Database::getinstance();
		return $db;
	}


}

你懂了?工厂模式,其实就是把类的实例化给隐藏了,让系统自动去执行实例化,你所要做的,就是通过工厂模式,来得到对应的对象。

转载于:https://my.oschina.net/u/3058368/blog/790744

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值