最常用的实例化对象模式,用工厂方法替代了实例化对象.
1.简单工厂:
简单工厂通过构造时传入的标识来生产产品,不同产品都在同一个工厂中生产,这种判断会随着产品的增加而增加,给扩展和维护带来麻烦.简单工厂模式又称静态工厂方法模式.
UML图:

实例代码:
class A
{
public function playMp3($songList)
{
foreach($songList as $val) {
echo $val . ‘.mp3‘;
}
}
}
class B
{
public function playWav($songList)
{
foreach($songList as $val) {
echo $val . ‘.wav‘;
}
}
}
class Factory
{
public static function create($str)
{
switch ($str) {
case ‘A‘:
return new A();
case ‘B‘:
return new B();
}
}
}
$song = Factory::create(‘A‘);
$song->playMp3(array(‘a.mp3‘));
//或者:
class Factory
{
public static function createA(){
return new A();
}
public static function createB(){
return new B();
}
}
$song = Factory::createA();
$song->playMp3(array(‘a.mp3‘));
2.工厂方法:
UML图:

示例代码:
class A
{
public function playMp3($songList)
{
foreach($songList as $val) {
echo $val . ‘.mp3‘;
}
}
}
class B
{
public function playWav($songList)
{
foreach($songList as $val) {
echo $val . ‘.wav‘;
}
}
}
// 为一类产品,创建一个工厂
class FactoryA
{
public function createA()
{
return new A();
}
}
// 为一类产品,创建一个工厂
class FactoryB
{
public function create()
{
return new B();
}
}
$a = new FactoryA();
$a->playMp3(array(‘a‘));
原文:http://www.cnblogs.com/itfenqing/p/7782322.html