码迷,mamicode.com
首页 > 其他好文 > 详细

工厂模式

时间:2017-11-04 11:11:33      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:logs   factor   cto   ima   工厂方法模式   img   分享   标识   alt   

一.工厂模式(Factory)

最常用的实例化对象模式,用工厂方法替代了实例化对象.

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‘));

  

 

工厂模式

标签:logs   factor   cto   ima   工厂方法模式   img   分享   标识   alt   

原文地址:http://www.cnblogs.com/itfenqing/p/7782322.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!