工厂模式和生产有关。生产什么呢,生产出来的是一个实例对象
,那么通过什么设备生产?通过一个工厂类生产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