首页 > 代码库 > 创建型模式 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式

创建型模式 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式

说起模式来大家都很头疼.大篇的介绍和概念,还有类图..

一 简单工厂模式不属于23中涉及模式,简单工厂一般分为:普通简单工厂、多方法简单工厂、静态方法简单工厂。

简单工厂模式:专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。它又称为静态工厂方法模式,属于类的创建型模式。

简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。

 普通简单工厂

 多方法简单工厂静态方法简单工厂
 
class SimpleFactory1{    public static function createService($name)    {        switch ($name) {            case value:                                return new Service1();                break;            case value:                return new Service2();                break;            default:                            break;        }    }}

 

 

class SimpleFactory2{    public  function createService1()    {        return new Service1()    }    public  function createService2()    {        return new Service2()    }}

 

 
class SimpleFactory3{    public static function createService1()    {        return new Service1()    }    public static function createService2()    {        return new Service2()    }}

 

 

在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种——静态工厂方法模式。

二 工厂模式

很多人拿工厂模式和简单工厂模式进行比较..我到现在还不知道用意为何...

我对工厂模式的理解很简单,就是一个实现抽象工厂接口且受到应用程序调用以创建产品对象的类.让我们看一个zf2中的实例

interface  FactoryInterface{    public function createService(ServiceLocatorInterface $serviceLocator);}class EventManagerFactory implements FactoryInterface{    public function createService(ServiceLocatorInterface $serviceLocator)    {        $em = new EventManager();        $em->setSharedManager($serviceLocator->get(SharedEventManager));        return $em;    }}

 

创建型模式 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式