background image

PHP 面向对象-生成对象的设计模式

一. 单例模式(Singleton) 
如果应用程序每次包含且仅包含一个对象,那么这个对象就是一单例. 用来替代全局变量.
 
代码如下:
 
<?php 

require_once

("DB.php"); 

class

 DatabaseConnection{ 

<STRONG><SPAN style="COLOR: #ff0000">

public

 

static

 

function 

get()</SPAN></STRONG>{ 

static

 

$db

 = null; 

if

 ( 

$db

 == null ) 

$db

 = 

new

 DatabaseConnection(); 

return

 

$db

private

 

$_handle

 = null; 

<STRONG><SPAN style="COLOR: #ff0000">

private

 

function 

__construct()</SPAN></STRONG> { 

$dsn

 = '

mysql://root:password@localhost/photos

§

'; 

$this

->_handle =& DB::Connect( 

$dsn

array

() ); 

public

 

function

 handle() 

return

 

$this

->_handle; 


print

( "Handle = ".DatabaseConnection::get()->handle()."\n" ); 

print

( "Handle = ".DatabaseConnection::get()->handle()."\n" ); 

?> 
 
 
二.工厂方法模式(factory method)要解决的问题: 
 
1>在代码运行时候才知道要生成的对象类型; 2>对象类型可能要扩充新产品类型; 3>每个
产品类型都可以定制特定的功能;工厂方法模式把创建者类与要生产的产品类分离.创建者
是一个工厂类,其中定义了用于生成产品对象的类方法.如果没有提供默认实现,就由创建
者类的子类来执行实例化.一般情况下,就是每个创建者类的子类实例化一个相应的产品子
类.

 

工厂模式的优点就在创建对象上。 它的任务就是把对象的创建过程都封装起来,然后

返回一个所需要的新类。想改变对象的结构和建立对象的方式,只需选择对象工厂,对代