码的改变只需要一次就够了。( 工厂模式的功能是如此强大, 它处于是应用的底层, 所以在
许多其余的复杂模式和应用中它会不停地出现。)不同处理对象,内部自动分流处理,但
对用户来说,只有一个方法,简单方便 使用接口方式实践工厂模式的例子:
代码如下:
interface
Hello{
function
say_hello();
}
class
English
implements
Hello{
public
function
say_hello(){
echo
"Hello!";
}
}
class
Chinese
implements
Hello{
public
function
say_hello(){
echo
"你好";
}
}
class
speak{
public
static
function
factory(
$type
){
if
(
$type
== 1)
$temp
=
new
English();
else
if
(
$type
== 2)
$temp
=
new
Chinese();
else
{
die
("Not supported!");
}
return
$temp
;
}
}
$test
= Speak::factory(1);
$test
->say_hello();
在<深入浅出设计模式>中,上面的被称为简单工厂模式,因为这个工厂必须能分辨要生产的
全部产品.如果有新的产品,必须对工厂进行对应修改,增加相应的业务逻辑或判断.简单工
厂模式的一个标志就是静态方法实现工厂生产功能.(不简单的)工厂方法模式: 工厂方法是
抽象类或接口,具体工厂实现这个方法(接口),让使用者调用以创建具体产品对象(每一个产
品都有对应的具体工厂)下面是重写的 hello
代码如下:
//
抽象工厂
interface
Speaker{
function
assignSpeaker();
}
//具体工厂 1