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

      }

    }

  • 相关阅读:
    19、spring注解学习(声明式事务)——spring注解版声明式事务
    Visual C# 2015调用SnmpSharpNet库实现简单的SNMP元素查询
    SNMP协议交互学习-获取udp的udpindatagrams
    LwIP的SNMP学习笔记
    stm32f407使用Keil uV5建立工程日志
    IP unnumbered interface,某个接口不编号,某个接口不分配IP地址
    OSPFv3与OSPFv2协议的比较
    卫星网络-拓扑优化-文献笔记
    卫星轨道相关笔记SGP4
    [20190226]删除tab$记录的恢复6.txt
  • 原文地址:https://www.cnblogs.com/wangjingwangjing/p/5284147.html
Copyright © 2011-2022 走看看