PHP对工厂模式的理解

工厂模式和生产有关。生产什么呢,生产出来的是一个实例对象,那么通过什么设备生产?通过一个工厂类生产simpleFactoty。怎么生产呢?工厂类调用自身静态方法来生产对象实例static function woman.工厂类静态方法必须返回一个对象.

class SimpleFactoty 
{
	public static function woman()
	{
		return new woman();
	}
}

使用工厂模式的必要性
为什么我们要构造工厂类去创建对象呢, 考虑这种情况 我们通过一个类创建对象 在快完成或者已经完成要扩展功能的时候,发现原来的类的类名不合适 或者说需要添加构造函数才能实现某些功能, 那怎么办呢 我们都已经通过这个类建很多实例了,难道要一个个去改???

来看下基本的工厂类

class Myobject{};
class Myfacory{
	public static function factory(){
		return new Myobject();
	}
}

Myfacory::factory(); // 基本工厂模式的应用

复杂点的工厂类

interface Transport{ // 定义接口类 类里面的方法只定义不实现
	public function go(); // 只定义不实现
}

class Bike implements Transport {
	public function go() // 谁implements谁实现接口类内部的方法
	{
		echo 'bike很慢';
	}
}

class Car implements Transport
{
	public function go()
	{
		echo 'car很快';
	}
}

class Bus implements Transport
{
	public function go()
	{
		echo 'bus走走停停';
	}
}

class TransFactory
{
	public static function factory($type)
	{
		switch($type){
			case 'bike':
					return new Bike();
				break;
			case 'car':
				return new Car();
			break;
			case 'bus':
				return new Bus();
			break;
		}
	}	
}

// $type 可以是 bike  car  bus  就是上面定义的
TransFactory::factory($type);

从以上例子就可以看出 简单理解就是有很产品类 我们让工厂帮我们把类都分好然后通过工程来获取类的实例化 个人愚见是这样的

参考1:PHP设计模式(一)工厂模式Factory实例详解【创建型】 作者:规速
参考2:PHP工厂模式的使用场景,使用方法 作者:酸suan

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值