当我看了简单工厂模式的定义后,就粗犷的认为根据参数返回不同实例,实例有共同的父类,然后是静态方法.
先来个简单的例子吧
<?php
class A {
public num = 1;
}
class B {
public num = 2;
}
class F {
public static function createObj($i){
if($i == 'a'){
return new A;
}elseif($i == 'b'){
return new B;
}
}
}
看完之后我感觉非常满意,只用了一个工厂类就可以获取多个不同类的实例.所以我就认为工厂类最主要的功能是能够实例化多个类.这的想法也为我理解不了工厂方法模式而埋下了伏笔.
其实.工厂类最大的用处就是抽离了重复代码.方便日后的统一修改.
就拿上面的例子来说,假设我没用工厂方法,而使用了new的方式.而很多地方依赖这个A类.当我把A类名改成AB.那我岂不是要去n+个地方去修改new A的操作.而使用了工厂方法的话,我们只要去修改这个工厂方法就行了.
ps:以上均为个人理解.如有出错和不足,欢迎指教补充