zoukankan      html  css  js  c++  java
  • 设计模式(工厂模式)

    什么是工厂模式:

    根据不同的需求,产生不同的对象。(接收用户提供的参数{类名},创建对应的对象,并返回对象)

    实现工厂模式代码:

    //工厂模式:产生对象

    class Factory{

      //工厂模式不需要创建自己类的对象,因此方法都是静态的

      //@param1 string $class ,需要创建对象的类名

      //@return object,返回的是类的对象,失败返回false

      public static function getInstance($class)

      {

        //加载类

        self::setAutoload();

        //创建对象

        return new $class;

      }

      //自动加载类

      public static function loadAction($class)

      {

        if(is_file("../Action/$class.class.php"))

        {

          include_once "../Action/$class.class.php";

        }

      }

      //自动加载类注册

      public static function setAutoload()

      {

        sql_autoload_register(array('Factory','loadAction'));

      }

    }

    工厂单例模式配合使用:

    class Factory{

      //三私一公

      private function __construct(){}

      private function __clone(){}

      private static $obj=array();

      //工厂模式不需要创建自己类的对象,因此方法都是静态的

      //@param1 string $class ,需要创建对象的类名

      //@return object,返回的是类的对象,失败返回false

      public static function getInstance($class)

      {

        //加载类

        self::setAutoload();

        //创建对象

        if(isset(self::$obj[$class]))

        {}else{

                  self::$obj[$class]=new $class;

        }

        return self::$obj[$class];

      }

      //自动加载类

      public static function loadAction($class)

      {

        if(is_file("../Action/$class.class.php"))

        {

          include_once "../Action/$class.class.php";

        }

      }

      //自动加载类注册

      public static function setAutoload()

      {

        sql_autoload_register(array('Factory','loadAction'));

      }

    }

  • 相关阅读:
    Uva 11806 拉拉队 二进制+容斥原理 经典!
    CSU CHESS
    hdu 4049 Tourism Planning 状态压缩dp
    HDOJ 4661: Message Passing(找递推公式+逆元)
    HDU
    hdu4647(思路啊!)
    spoj 370. Ones and zeros(搜索+同余剪枝+链表存数(可能越界LL))
    URAL
    URAL
    hdu4614 (二分线段树)
  • 原文地址:https://www.cnblogs.com/wangjingwangjing/p/5284147.html
Copyright © 2011-2022 走看看