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;
}
}
( "Handle = ".DatabaseConnection::get()->handle()."\n" );
( "Handle = ".DatabaseConnection::get()->handle()."\n" );
?>
二.工厂方法模式(factory method)要解决的问题:
1>在代码运行时候才知道要生成的对象类型; 2>对象类型可能要扩充新产品类型; 3>每个
产品类型都可以定制特定的功能;工厂方法模式把创建者类与要生产的产品类分离.创建者
是一个工厂类,其中定义了用于生成产品对象的类方法.如果没有提供默认实现,就由创建
者类的子类来执行实例化.一般情况下,就是每个创建者类的子类实例化一个相应的产品子
类.
工厂模式的优点就在创建对象上。 它的任务就是把对象的创建过程都封装起来,然后
返回一个所需要的新类。想改变对象的结构和建立对象的方式,只需选择对象工厂,对代