background image

码的改变只需要一次就够了。( 工厂模式的功能是如此强大, 它处于是应用的底层, 所以在
许多其余的复杂模式和应用中它会不停地出现。)不同处理对象,内部自动分流处理,但

 

对用户来说,只有一个方法,简单方便 使用接口方式实践工厂模式的例子: 
代码如下:
 

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