标签:
php 工厂模式
主要讲的是简单工程模式。
场景:写一个简单计算器
普通写法:
<?php
class Calculate{
function getResult($inputA,$inputB,$symbol){
switch($symbol){
case “+”:
$result=$inputA+$inputB;
break;
case “-“;
$result=$inputA-$inputB;
break;
default:
$result=“”;
break;
}
}
}
//客户端代码
$calculate=new Calculate();
$calculate->getResult(1,2,”+”);
从上面的例子看并没有什么毛病。但是有一天需求改了,要求这个计算器能计算乘法,除法,直接加swtich分支能解决,突然有一天需求在改了,求根,更复杂的算数的时候呢?
工厂模式按照我的理解,就是提供一群类的集合,比如加法就进入加法类运算,减法进入减法类运算。
简单工程模式实现:
Abstract class symbol{
Abstract function getResult();
}
//加法类
class jiafa extend symbol{
function getResult{
//加法运算
}
}
//减法类
class jianfa extend symbol{
function getResult{
// 减法运算
}
}
//乘法类
class chengfa extend symbol{
function getResult{
//乘法运算
}
}
//工厂类
class factory{
function calculate($params){
switch($params){
case “+”:
$operate=new jiafa();
$operate->getResult;
break;
case “-“:
$operate=new jianfa();
$operate->getResult;
break;
...
}
}
}
从上面的代码上,工厂虽然还存在switch分支,但是把更复杂的东西交给了加法类等去完成,而不去关注实现过程。
php 工厂模式
标签:
原文地址:http://www.cnblogs.com/varliny/p/4433747.html