学习二之简单工厂模式
定义
简单工厂模式,通过定义一个工厂类,负责完成类实例的创建,根据参数的不同返回不同的类示例。对外部来讲,只需传入一个正常的参数就可以获得想要的对象,而不必需要具体创建细节。创建类实例的方法通常为静态方法,所以简单工厂模式也称静态工厂方法模式。
使用场景
当要实现类实例的创建,对外隐藏创建类的细节时就可以使用简单工厂模式。通过简单工厂模式,对外部来说只需要知道有个工厂类即可,而不需要知道还有其他类。也就是说外部只需要对工厂类有依赖,从而降低耦合。
类图
PHP代码示例
运算类
abstract class Operation
{
public $numberA;
public $numberB;
abstract public function getResult();
}
加法类
class OperationAdd extends Operation
{
public function getResult()
{
return $this->numberA + $this->numberB;
}
}
减法类
class OperationSub extends Operation
{
public function getResult()
{
return $this->numberA - $this->numberB;
}
}
工厂类
class OperationFactory
{
public static function createOperate($type)
{
$obj = null;
switch ($type) {
case '+':
$obj = new OperationAdd();
break;
case '-':
$obj = new OperationSub();
break;
default:
# code...
break;
}
return $obj;
}
}
客户端
$opObj = OperationFactory::createOperate('+');
$opObj->numberA = 1;
$opObj->numberB = 2;
$res = $opObj->getResult();
echo $res;